]> git.ipfire.org Git - people/pmueller/ipfire-2.x.git/blobdiff - src/patches/suse-2.6.27.31/patches.fixes/scsi-dh-rdac-retry-for-not-ready
Move xen patchset to new version's subdir.
[people/pmueller/ipfire-2.x.git] / src / patches / suse-2.6.27.31 / patches.fixes / scsi-dh-rdac-retry-for-not-ready
diff --git a/src/patches/suse-2.6.27.31/patches.fixes/scsi-dh-rdac-retry-for-not-ready b/src/patches/suse-2.6.27.31/patches.fixes/scsi-dh-rdac-retry-for-not-ready
new file mode 100644 (file)
index 0000000..2f99179
--- /dev/null
@@ -0,0 +1,29 @@
+From: Vijay Chauhan <vijay.chauhan@lsi.com>
+Subject: Retry NOT READY for rdac device handler
+References: bnc#496502
+
+During device discovery read capacity fails with 0x020401 and sets the device
+size to 0. As a reason any I/O submitted to this path gets killed at sd_prep_fn
+with BLKPREP_KILL. This patch is to retry for 0x020401. NEED_RETRY in
+scsi_decide_disposition does not give sufficient time for the device to become
+ready. 
+
+Signed-off-by: Vijay Chauhan <vijay.chauhan@lsi.com>
+Signed-off-by: Hannes Reinecke <hare@suse.de>
+
+diff --git a/drivers/scsi/device_handler/scsi_dh_rdac.c b/drivers/scsi/device_handler/scsi_dh_rdac.c
+index 77b724f..4c97279 100644
+--- a/drivers/scsi/device_handler/scsi_dh_rdac.c
++++ b/drivers/scsi/device_handler/scsi_dh_rdac.c
+@@ -548,6 +548,11 @@ static int rdac_check_sense(struct scsi_device *sdev,
+       struct rdac_dh_data *h = get_rdac_data(sdev);
+       switch (sense_hdr->sense_key) {
+       case NOT_READY:
++              if (sense_hdr->asc == 0x04 && sense_hdr->ascq == 0x01)
++                      /* LUN Not Ready - In process of becoming ready
++                       * Just retry.
++                       */
++                      return ADD_TO_MLQUEUE;
+               if (sense_hdr->asc == 0x04 && sense_hdr->ascq == 0x81)
+                       /* LUN Not Ready - Storage firmware incompatible
+                        * Manual code synchonisation required.