summaryrefslogtreecommitdiffstats
path: root/drivers/scsi/device_handler
diff options
context:
space:
mode:
authorHannes Reinecke <hare@suse.de>2016-02-19 09:17:01 +0100
committerMartin K. Petersen <martin.petersen@oracle.com>2016-02-24 03:27:02 +0100
commitdd5cc4086bda53c2cd1a845c472816719d1dd50c (patch)
tree8aa04b85575ad59bb6e580973bb3ea6cea14e4f3 /drivers/scsi/device_handler
parentscsi_dh_alua: Make stpg synchronous (diff)
downloadlinux-dd5cc4086bda53c2cd1a845c472816719d1dd50c.tar.xz
linux-dd5cc4086bda53c2cd1a845c472816719d1dd50c.zip
scsi_dh_alua: call alua_rtpg() if stpg fails
If the call to SET TARGET PORT GROUPS fails we have no idea what state the array is left in, so we need to issue a call to REPORT TARGET PORT GROUPS in these cases. 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>
Diffstat (limited to 'drivers/scsi/device_handler')
-rw-r--r--drivers/scsi/device_handler/scsi_dh_alua.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/drivers/scsi/device_handler/scsi_dh_alua.c b/drivers/scsi/device_handler/scsi_dh_alua.c
index 467c2cfd09b8..b2a2a771badc 100644
--- a/drivers/scsi/device_handler/scsi_dh_alua.c
+++ b/drivers/scsi/device_handler/scsi_dh_alua.c
@@ -674,6 +674,8 @@ static int alua_activate(struct scsi_device *sdev,
h->flags |= ALUA_OPTIMIZE_STPG;
err = alua_stpg(sdev, h);
+ if (err == SCSI_DH_RETRY)
+ err = alua_rtpg(sdev, h, 1);
out:
if (fn)
fn(data, err);