Hi all, here the next round of my update to the ALUA device handler. The main features are: - Topology discovery: the device handler creates a separate port_group structure, which is used to update all paths to the same port group. With that we achieve a significant reduction of the number of RTPGs. - Asynchronous state update: The ALUA state is now updated from a workqueue item, so all concurrent RTPG calls are coaleasced. The ALUA state update is also triggered by sense codes indicating an ALUA state change. - Use the existing vpd page 0x83 to detect device IDs - Add generic 'access_state' attribute to discover the current ALUA state from userspace. The entire tree can be found at kernel/hare/scsi-devel branch alua.v5 on git.kernel.org As usual, reviews and comments are welcome. Changes to v1: - Split off rtpg workqueue into separate items - User per-port workqueues - Incorporate review from Bart - Incorporate review from hch Changes to v2: - Fixup patch descriptions - Split off 'Improve error handling' patch Changes to v3: - Implement generic 'scsi_vpd_lun_id()' function to parse vpd page 0x83 Changes to v4: - Revert back to a single workqueue item - Implement generic 'scsi_vpd_tpg_id()' function - Add 'access_state' attribute to struct scsi_device - Incorporate review from Ewan Milne - Incorporate further reviews from hch - Reshuffle patches Hannes Reinecke (36): scsi_dh: move 'dh_state' sysfs attribute to generic code scsi: ignore errors from scsi_dh_add_device() scsi_dh_alua: Disable ALUA handling for non-disk devices scsi_dh_alua: Use vpd_pg83 information scsi_dh_alua: improved logging scsi_dh_alua: sanitze sense code handling scsi_dh_alua: use standard logging functions scsi_dh_alua: return standard SCSI return codes in submit_rtpg scsi_dh_alua: fixup description of stpg_endio() scsi: remove scsi_show_sense_hdr() scsi_dh_alua: use flag for RTPG extended header scsi_dh_alua: use unaligned access macros 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: rework alua_check_tpgs() to return the tpgs mode scsi_dh_alua: Use separate alua_port_group structure scsi_dh_alua: allocate RTPG buffer separately scsi_dh_alua: simplify sense code handling scsi: Add scsi_vpd_lun_id() scsi_dh_alua: use unique device id scsi: Add scsi_vpd_tpg_id() scsi_dh_alua: simplify alua_initialize() revert "scsi_dh_alua: ALUA hander attach should succeed while TPG is transitioning" scsi_dh_alua: Use workqueue for RTPG 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: rescan VPD attributes 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 | 1173 +++++++++++++++++----------- drivers/scsi/scsi.c | 20 +- drivers/scsi/scsi_dh.c | 68 +- drivers/scsi/scsi_lib.c | 184 +++++ drivers/scsi/scsi_scan.c | 11 + drivers/scsi/scsi_sysfs.c | 122 ++- drivers/scsi/ses.c | 13 +- include/scsi/scsi_dbg.h | 2 - include/scsi/scsi_device.h | 4 + include/scsi/scsi_dh.h | 2 + include/scsi/scsi_proto.h | 13 + 11 files changed, 1081 insertions(+), 531 deletions(-) -- 1.8.5.6 -- To unsubscribe from this list: send the line "unsubscribe linux-scsi" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html