ALUA device handler update, part II
Get series with b4
b4 am [email protected]Versions newest first · linked by author and title
- v8 Latest23 patches 11 repliesIn review
- v723 patches 25 repliesSuperseded
- v623 patches 1 replySuperseded
Earlier versions · 4
| Version | Posted | Patches | Replies | Status |
|---|---|---|---|---|
| v4 | 23 patches | 4 replies | Superseded | |
| v3 | 24 patches | 7 replies | Superseded | |
| v2 | 22 patches | 12 replies | Superseded | |
| v1 | 20 patches | 28 replies | Superseded |
Changes to v7 from the cover letter
- Remove SCSI_ACCESS_STATE_UNKNOWN as suggested by Bart
- Fixup typo in pg->flags as suggested by Bart
- Return -EINVAL when reading from access_state and no device handler is attached.
Patches in v8 No applies recorded yet
| # | Subject and files | Size | Replies | Applied |
|---|---|---|---|---|
| 1/23 | scsi_dh_alua: Pass buffer as function argumentdrivers/ | +7 | 0 replies | |
| 2/23 | scsi_dh_alua: separate out alua_stpg()drivers/ | +61 | 0 replies | |
| 3/23 | scsi_dh_alua: Make stpg synchronousdrivers/ | +54 | 0 replies | |
| 4/23 | scsi_dh_alua: call alua_rtpg() if stpg failsdrivers/ | +2 | 0 replies | |
| 5/23 | scsi_dh_alua: switch to scsi_execute_req_flags()drivers/ | +36 | 0 replies | |
| 6/23 | scsi_dh_alua: allocate RTPG buffer separatelydrivers/ | +23 | 0 replies | |
| 7/23 | scsi_dh_alua: Use separate alua_port_group structuredrivers/ include/ | +129 | 0 replies | |
| 8/23 | scsi_dh_alua: use unique device iddrivers/ | +50 | 0 replies | |
| 9/23 | scsi_dh_alua: simplify alua_initialize()drivers/ | +17 | 0 replies | |
| 10/23 | revert commit a8e5a2d593cb ("[SCSI] scsi_dh_alua: ALUA handler attach should succeed while TPG is transitioning")drivers/ | +12 | 0 replies | |
| 11/23 | scsi_dh_alua: move optimize_stpg evaluationdrivers/ | +6 | 0 replies | |
| 12/23 | scsi_dh_alua: remove 'rel_port' from alua_dh_data structuredrivers/ | +1 | 0 replies | |
| 13/23 | scsi_dh_alua: Use workqueue for RTPGdrivers/ | +242 | 0 replies | |
| 14/23 | scsi_dh_alua: Allow workqueue to run synchronouslydrivers/ | +18 | 0 replies | |
| 15/23 | scsi_dh_alua: Add new blacklist flag 'BLIST_SYNC_ALUA'drivers/ drivers/ drivers/ +2 more | +9 | 0 replies | |
| 16/23 | scsi_dh_alua: Recheck state on unit attentiondrivers/ | +55 | 0 replies | |
| 17/23 | scsi_dh_alua: update all port statesdrivers/ | +26 | 0 replies | |
| 18/23 | scsi_dh_alua: Send TEST UNIT READY to poll for transitioningdrivers/ | +38 | 0 replies | |
| 19/23 | scsi_dh: add 'rescan' callbackdrivers/ drivers/ drivers/ +1 more | +17 | 0 replies | |
| 20/23 | scsi: Add 'access_state' attributedrivers/ include/ include/ | +66 | 10 replies | |
| 21/23 | scsi_dh_alua: use common definitions for ALUA statedrivers/ | +25 | 0 replies | |
| 22/23 | scsi_dh_alua: update 'access_state' fielddrivers/ | +46 | 0 replies | |
| 23/23 | scsi_dh_alua: Update version to 2.0drivers/ | +1 | 0 replies |
Reviews trailers per patch
All 23 patches have a Reviewed-by or Acked-by.
| Patch | Bart Van Assche | Christoph Hellwig | Ewan Milne | Martin K. Petersen |
|---|---|---|---|---|
| 1/23 | R-b | R-b | R-b | |
| 2/23 | R-b | R-b | ||
| 3/23 | R-b | R-b | ||
| 4/23 | R-b | R-b | ||
| 5/23 | R-b | R-b | R-b | |
| 6/23 | R-b | R-b | ||
| 7/23 | R-b | R-b | ||
| 8/23 | R-b | R-b | ||
| 9/23 | R-b | R-b | ||
| 10/23 | R-b | R-b | R-b | |
| 11/23 | R-b | R-b | ||
| 12/23 | R-b | R-b | ||
| 13/23 | R-b | R-b | ||
| 14/23 | R-b | R-b | ||
| 15/23 | R-b | R-b | ||
| 16/23 | R-b | R-b | ||
| 17/23 | R-b | R-b | ||
| 18/23 | R-b | R-b | R-b | |
| 19/23 | R-b | R-b | ||
| 20/23 | R-b | R-b | ||
| 21/23 | R-b | |||
| 22/23 | R-b | R-b | R-b | |
| 23/23 | R-b |
Trailers given in replies are filled; those carried in the patches from earlier versions are outlined with dashes. Scroll the table sideways for all 4 reviewers.
Cover letter [PATCHv8 00/23] ALUA device handler update, part II
As promised here is now the second part of my ALUA device handler update. This contains a major rework of the ALUA device handler as execution is moved onto a workqueue. This has the advantage that we avoid having to do multiple calls to the same LUN (as happens frequently when failing over a LUN with several paths) and finally retries are handled correctly. As some arrays are only capable of handling one STPG at a time I've added a blacklist flag which then uses a singlethreaded workqueue, thereby effectively synchronize STPG handling.
Thanks to Bart for this suggestion.
The entire patchset can be found at:
git.kernel.org:/hare/scsi-devel/h/alua-2.v8
As usual, comments and reviews are welcome.
Changes to v7:
- Remove SCSI_ACCESS_STATE_UNKNOWN as suggested by Bart
- Fixup typo in pg->flags as suggested by Bart
- Return -EINVAL when reading from access_state and no device handler is attached.
Changes to v6:
- Fixup mutex lockdep issue noticed by Bart
- Reshuffle locks in alua_check_vpd
Changes to v5:
- Fixup lock imbalance noticed by Bart
- use #define instead of enum for access_state as suggested by Ewan
- Updated patch description as suggested by Ewan
- Changed occurrences to 'SET TARGET PORT GROUP' as suggested by Bart
Changes to v4:
- use kfree_rcu() as suggested by hch
- Use 'IS_ERR' instead of 'PTR_ERR' when checking for validity of a pointer
- Simplify pg assignment as suggested by hch
- Use separate WARN_ON statements a suggested by hch
- Fixes to avoid I/O stall on failover
Changes to v3:
- Use scsi_device flag for blacklisting as suggested by hch
- Add Arrays for synchronous ALUA handling
- Move synchronize_rcu() into release_port_group()
- Add remaining reviewed tags
Changes to v2:
- Use a SCSI blacklist flag instead of a hardware handler parameter for switching to synchronous ALUA handling
- Move scsi_get_device_flags{,_keyed} to scsi_devinfo.h
- Move flush_delayed_work() into release_port_group()
- Rename alua_lookup_pg() into alua_find_get_pg()
- Add __rcu annotations to keep sparse happy
Changes to v1:
- Include reviews from hch
- Switch to hardware handler parameter instead of module option
Hannes Reinecke (23):
scsi_dh_alua: Pass buffer as function argument
scsi_dh_alua: separate out alua_stpg()
scsi_dh_alua: Make stpg synchronous
scsi_dh_alua: call alua_rtpg() if stpg fails
scsi_dh_alua: switch to scsi_execute_req_flags()
scsi_dh_alua: allocate RTPG buffer separately
scsi_dh_alua: Use separate alua_port_group structure
scsi_dh_alua: use unique device id
scsi_dh_alua: simplify alua_initialize()
revert commit a8e5a2d593cb ("[SCSI] scsi_dh_alua: ALUA handler attach
should succeed while TPG is transitioning")
scsi_dh_alua: move optimize_stpg evaluation
scsi_dh_alua: remove 'rel_port' from alua_dh_data structure
scsi_dh_alua: Use workqueue for RTPG
scsi_dh_alua: Allow workqueue to run synchronously
scsi_dh_alua: Add new blacklist flag 'BLIST_SYNC_ALUA'
scsi_dh_alua: Recheck state on unit attention
scsi_dh_alua: update all port states
scsi_dh_alua: Send TEST UNIT READY to poll for transitioning
scsi_dh: add 'rescan' callback
scsi: Add 'access_state' attribute
scsi_dh_alua: use common definitions for ALUA state
scsi_dh_alua: update 'access_state' field
scsi_dh_alua: Update version to 2.0
drivers/scsi/device_handler/scsi_dh_alua.c | 979 ++++++++++++++++++++--------- drivers/scsi/scsi_devinfo.c | 2 + drivers/scsi/scsi_lib.c | 1 + drivers/scsi/scsi_scan.c | 11 +- drivers/scsi/scsi_sysfs.c | 53 ++ include/scsi/scsi_device.h | 2 + include/scsi/scsi_devinfo.h | 1 + include/scsi/scsi_dh.h | 2 + include/scsi/scsi_proto.h | 12 + 9 files changed, 756 insertions(+), 307 deletions(-)
Signature · 1 line
1.8.5.6