]> git.ipfire.org Git - ipfire-2.x.git/blame - src/patches/suse-2.6.27.39/patches.fixes/scsi-retry-transport-error
Imported linux-2.6.27.39 suse/xen patches.
[ipfire-2.x.git] / src / patches / suse-2.6.27.39 / patches.fixes / scsi-retry-transport-error
CommitLineData
2cb7cef9
BS
1Subject: scsi_error regression: Fix idempotent command handling
2From: Mike Christie <mchristi@redhat.com>
3Date: Wed Nov 5 12:48:23 2008 -0500:
4Git: 939c2288c35132fe340b2694c7d02cacf7593723
5
6Drivers want to be able to return DID_TRANSPORT_DISRUPTED and
7have it do the right thing for commands like tape and passthrouh
8as far as retries go. The LLDs previously used DID_BUS_BUSY or DID_ERROR
9which followed the cmd->retries limit, but DID_TRANSPORT_DISRUPTED
10was skipping that check so it could have caused a problem with tape
11commands.
12
13This patch has DID_TRANSPORT_DISRUPTED check the cmd->retries/cmd->allowed.
14
15Signed-off-by: Mike Christie <mchristi@redhat.com>
16Signed-off-by: James Bottomley <James.Bottomley@HansenPartnership.com>
17Signed-off-by: Hannes Reinecke <hare@suse.de>
18
19---
20 drivers/scsi/scsi_error.c | 5 +++--
21 1 file changed, 3 insertions(+), 2 deletions(-)
22
23--- a/drivers/scsi/scsi_error.c
24+++ b/drivers/scsi/scsi_error.c
25@@ -1420,9 +1420,10 @@ int scsi_decide_disposition(struct scsi_
26 * LLD/transport was disrupted during processing of the IO.
27 * The transport class is now blocked/blocking,
28 * and the transport will decide what to do with the IO
29- * based on its timers and recovery capablilities.
30+ * based on its timers and recovery capablilities if
31+ * there are enough retries.
32 */
33- return ADD_TO_MLQUEUE;
34+ goto maybe_retry;
35 case DID_TRANSPORT_FAILFAST:
36 /*
37 * The transport decided to failfast the IO (most likely