• Hannes Reinecke's avatar
    scsi_dh_alua: Use workqueue for RTPG · 03197b61
    Hannes Reinecke authored
    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: default avatarBart Van Assche <bart.vanassche@sandisk.com>
    Reviewed-by: default avatarChristoph Hellwig <hch@lst.de>
    Signed-off-by: default avatarHannes Reinecke <hare@suse.de>
    Signed-off-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
    03197b61
scsi_dh_alua.c 25.6 KB