alistair23-linux/drivers/scsi/device_handler
Hannes Reinecke 03197b61c5 scsi_dh_alua: Use workqueue for RTPG
The current ALUA device_handler has two drawbacks:
- We're sending a 'SET TARGET PORT GROUP' command to every LUN,
  disregarding the fact that several LUNs might be in a port group
  and will be automatically switched whenever _any_ LUN within
  that port group receives the command.
- Whenever a LUN is in 'transitioning' mode we cannot block I/O
  to that LUN, instead the controller has to abort the command.
  This leads to increased traffic across the wire and heavy load
  on the controller during switchover.

With this patch the RTPG handling is moved to a per-portgroup
workqueue. This reduces the number of 'REPORT TARGET PORT GROUP'
and 'SET TARGET PORT GROUPS' sent to the controller as we're sending
them now per port group, and not per device as previously.
It also allows us to block I/O to any LUN / port group found to be
in 'transitioning' ALUA mode, as the workqueue item will be requeued
until the controller moves out of transitioning.

Reviewed-by: Bart Van Assche <bart.vanassche@sandisk.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Hannes Reinecke <hare@suse.de>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
2016-02-23 21:27:02 -05:00
..
Kconfig scsi_dh: force modular build if SCSI is a module 2016-02-23 21:27:02 -05:00
Makefile scsi_dh: integrate into the core SCSI code 2015-08-28 13:14:56 -07:00
scsi_dh_alua.c scsi_dh_alua: Use workqueue for RTPG 2016-02-23 21:27:02 -05:00
scsi_dh_emc.c scsi_dh: kill struct scsi_dh_data 2015-08-28 13:14:57 -07:00
scsi_dh_hp_sw.c scsi_dh: kill struct scsi_dh_data 2015-08-28 13:14:57 -07:00
scsi_dh_rdac.c scsi_dh_rdac: always retry MODE SELECT on command lock violation 2016-02-04 22:26:06 -05:00