]> git.ipfire.org Git - people/teissler/ipfire-2.x.git/blobdiff - src/patches/suse-2.6.27.31/patches.fixes/scsi-dh-rdac-retry-mode-select
Imported linux-2.6.27.39 suse/xen patches.
[people/teissler/ipfire-2.x.git] / src / patches / suse-2.6.27.31 / patches.fixes / scsi-dh-rdac-retry-mode-select
diff --git a/src/patches/suse-2.6.27.31/patches.fixes/scsi-dh-rdac-retry-mode-select b/src/patches/suse-2.6.27.31/patches.fixes/scsi-dh-rdac-retry-mode-select
deleted file mode 100644 (file)
index a8416f1..0000000
+++ /dev/null
@@ -1,58 +0,0 @@
-Subject: Retry mode select in RDAC device handler
-From: Chandra Seetharaman <sekharan@us.ibm.com>
-References: bnc#441337
-
-When the mode select sent to the controller fails with the retryable
-error, it is better to retry the mode_select from the hardware handler
-itself, instead of propagating the failure to dm-multipath.
-
-Signed-off-by: Chandra Seetharaman <sekharan@us.ibm.com>
-Signed-off-by: Hannes Reinecke <hare@suse.de>
-
----
----
- drivers/scsi/device_handler/scsi_dh_rdac.c |   15 +++++++++++----
- 1 file changed, 11 insertions(+), 4 deletions(-)
-
---- a/drivers/scsi/device_handler/scsi_dh_rdac.c
-+++ b/drivers/scsi/device_handler/scsi_dh_rdac.c
-@@ -24,6 +24,7 @@
- #include <scsi/scsi_dh.h>
- #define RDAC_NAME "rdac"
-+#define RDAC_RETRY_COUNT 5
- /*
-  * LSI mode page stuff
-@@ -475,21 +476,27 @@ static int send_mode_select(struct scsi_
- {
-       struct request *rq;
-       struct request_queue *q = sdev->request_queue;
--      int err = SCSI_DH_RES_TEMP_UNAVAIL;
-+      int err, retry_cnt = RDAC_RETRY_COUNT;
-+retry:
-+      err = SCSI_DH_RES_TEMP_UNAVAIL;
-       rq = rdac_failover_get(sdev, h);
-       if (!rq)
-               goto done;
--      sdev_printk(KERN_INFO, sdev, "queueing MODE_SELECT command.\n");
-+      sdev_printk(KERN_INFO, sdev, "%s MODE_SELECT command.\n",
-+              (retry_cnt == RDAC_RETRY_COUNT) ? "queueing" : "retrying");
-       err = blk_execute_rq(q, NULL, rq, 1);
--      if (err != SCSI_DH_OK)
-+      blk_put_request(rq);
-+      if (err != SCSI_DH_OK) {
-               err = mode_select_handle_sense(sdev, h->sense);
-+              if (err == SCSI_DH_RETRY && retry_cnt--)
-+                      goto retry;
-+      }
-       if (err == SCSI_DH_OK)
-               h->state = RDAC_STATE_ACTIVE;
--      blk_put_request(rq);
- done:
-       return err;
- }