[SCSI] scsi_dh_alua: ALUA check sense should retry device internal reset unit attention
authorStewart, Sean <Sean.Stewart@netapp.com>
Tue, 15 Oct 2013 15:52:39 +0000 (15:52 +0000)
committerJames Bottomley <JBottomley@Parallels.com>
Fri, 25 Oct 2013 10:14:18 +0000 (11:14 +0100)
When the scsi_dh_alua handler issues an RTPG during initialization, if it gets
0x06/0x29/0x04 as the sense, it will fail to attach the handler.  NetApp
E-Series returns 0x29/0x00 for power on, and 0x29/0x04 for conditions that
cause the controller to reboot again.  These conditions should be treated
identically within the handler.

Signed-off-by: Sean Stewart <Sean.Stewart@netapp.com>
Acked-by: Hannes Reinecke <hare@suse.de>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
drivers/scsi/device_handler/scsi_dh_alua.c

index 68adb8955d2d7643e59f810d8d236007103d3bf4..78205cc2059c4e640bec01787cff8aef26d9ebd6 100644 (file)
@@ -481,6 +481,11 @@ static int alua_check_sense(struct scsi_device *sdev,
                         * Power On, Reset, or Bus Device Reset, just retry.
                         */
                        return ADD_TO_MLQUEUE;
+               if (sense_hdr->asc == 0x29 && sense_hdr->ascq == 0x04)
+                       /*
+                        * Device internal reset
+                        */
+                       return ADD_TO_MLQUEUE;
                if (sense_hdr->asc == 0x2a && sense_hdr->ascq == 0x01)
                        /*
                         * Mode Parameters Changed