scsi_dh_alua: call alua_rtpg() if stpg fails
authorHannes Reinecke <hare@suse.de>
Fri, 19 Feb 2016 08:17:01 +0000 (09:17 +0100)
committerMartin K. Petersen <martin.petersen@oracle.com>
Wed, 24 Feb 2016 02:27:02 +0000 (21:27 -0500)
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>
drivers/scsi/device_handler/scsi_dh_alua.c

index 467c2cfd09b80377b671194cb9c23072cf8008f3..b2a2a771badc678fe6157c83ca568ae47e5377b9 100644 (file)
@@ -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);