Skip to content

ALUA device handler update, part II

Hannes Reinecke linux-scsi 7 versions – In review

Get series with b4
b4 am [email protected]

Versions newest first · linked by author and title

  1. v8 Latest23 patches 11 repliesIn review
  2. v723 patches 25 repliesSuperseded
  3. v623 patches 1 replySuperseded
Earlier versions · 4
VersionPostedPatchesRepliesStatus
v423 patches4 repliesSuperseded
v324 patches7 repliesSuperseded
v222 patches12 repliesSuperseded
v120 patches28 repliesSuperseded

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 filesSizeRepliesApplied
1/23scsi_dh_alua: Pass buffer as function argumentdrivers/scsi/device_handler/scsi_dh_alua.c+7 -60 replies
2/23scsi_dh_alua: separate out alua_stpg()drivers/scsi/device_handler/scsi_dh_alua.c+61 -340 replies
3/23scsi_dh_alua: Make stpg synchronousdrivers/scsi/device_handler/scsi_dh_alua.c+54 -1040 replies
4/23scsi_dh_alua: call alua_rtpg() if stpg failsdrivers/scsi/device_handler/scsi_dh_alua.c+2 -00 replies
5/23scsi_dh_alua: switch to scsi_execute_req_flags()drivers/scsi/device_handler/scsi_dh_alua.c+36 -890 replies
6/23scsi_dh_alua: allocate RTPG buffer separatelydrivers/scsi/device_handler/scsi_dh_alua.c+23 -340 replies
7/23scsi_dh_alua: Use separate alua_port_group structuredrivers/scsi/device_handler/scsi_dh_alua.c include/scsi/scsi_dh.h+129 -530 replies
8/23scsi_dh_alua: use unique device iddrivers/scsi/device_handler/scsi_dh_alua.c+50 -50 replies
9/23scsi_dh_alua: simplify alua_initialize()drivers/scsi/device_handler/scsi_dh_alua.c+17 -210 replies
10/23revert commit a8e5a2d593cb ("[SCSI] scsi_dh_alua: ALUA handler attach should succeed while TPG is transitioning")drivers/scsi/device_handler/scsi_dh_alua.c+12 -190 replies
11/23scsi_dh_alua: move optimize_stpg evaluationdrivers/scsi/device_handler/scsi_dh_alua.c+6 -70 replies
12/23scsi_dh_alua: remove 'rel_port' from alua_dh_data structuredrivers/scsi/device_handler/scsi_dh_alua.c+1 -50 replies
13/23scsi_dh_alua: Use workqueue for RTPGdrivers/scsi/device_handler/scsi_dh_alua.c+242 -540 replies
14/23scsi_dh_alua: Allow workqueue to run synchronouslydrivers/scsi/device_handler/scsi_dh_alua.c+18 -30 replies
15/23scsi_dh_alua: Add new blacklist flag 'BLIST_SYNC_ALUA'drivers/scsi/device_handler/scsi_dh_alua.c drivers/scsi/scsi_devinfo.c drivers/scsi/scsi_scan.c +2 more+9 -00 replies
16/23scsi_dh_alua: Recheck state on unit attentiondrivers/scsi/device_handler/scsi_dh_alua.c+55 -120 replies
17/23scsi_dh_alua: update all port statesdrivers/scsi/device_handler/scsi_dh_alua.c+26 -90 replies
18/23scsi_dh_alua: Send TEST UNIT READY to poll for transitioningdrivers/scsi/device_handler/scsi_dh_alua.c+38 -00 replies
19/23scsi_dh: add 'rescan' callbackdrivers/scsi/device_handler/scsi_dh_alua.c drivers/scsi/scsi_lib.c drivers/scsi/scsi_scan.c +1 more+17 -10 replies
20/23scsi: Add 'access_state' attributedrivers/scsi/scsi_sysfs.c include/scsi/scsi_device.h include/scsi/scsi_proto.h+66 -010 replies
21/23scsi_dh_alua: use common definitions for ALUA statedrivers/scsi/device_handler/scsi_dh_alua.c+25 -330 replies
22/23scsi_dh_alua: update 'access_state' fielddrivers/scsi/device_handler/scsi_dh_alua.c+46 -20 replies
23/23scsi_dh_alua: Update version to 2.0drivers/scsi/device_handler/scsi_dh_alua.c+1 -10 replies

Reviews trailers per patch

All 23 patches have a Reviewed-by or Acked-by.

PatchBart Van AsscheChristoph HellwigEwan MilneMartin K. Petersen
1/23R-b R-b R-b
2/23R-b R-b
3/23R-b R-b
4/23R-b R-b
5/23R-b R-b R-b
6/23R-b R-b
7/23R-b R-b
8/23R-b R-b
9/23R-b R-b
10/23R-b R-b R-b
11/23R-b R-b
12/23R-b R-b
13/23R-b R-b
14/23R-b R-b
15/23R-b R-b
16/23R-b R-b
17/23R-b R-b
18/23R-b R-b R-b
19/23R-b R-b
20/23R-b R-b
21/23R-b
22/23R-b R-b R-b
23/23R-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.

Read the v8 thread

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