]> git.ipfire.org Git - people/teissler/ipfire-2.x.git/blob - src/patches/suse-2.6.27.31/patches.fixes/scsi-retry-transport-error
Reenabled linux-xen, added patches for Xen Kernel Version 2.6.27.31,
[people/teissler/ipfire-2.x.git] / src / patches / suse-2.6.27.31 / patches.fixes / scsi-retry-transport-error
1 Subject: scsi_error regression: Fix idempotent command handling
2 From: Mike Christie <mchristi@redhat.com>
3 Date: Wed Nov 5 12:48:23 2008 -0500:
4 Git: 939c2288c35132fe340b2694c7d02cacf7593723
5
6 Drivers want to be able to return DID_TRANSPORT_DISRUPTED and
7 have it do the right thing for commands like tape and passthrouh
8 as far as retries go. The LLDs previously used DID_BUS_BUSY or DID_ERROR
9 which followed the cmd->retries limit, but DID_TRANSPORT_DISRUPTED
10 was skipping that check so it could have caused a problem with tape
11 commands.
12
13 This patch has DID_TRANSPORT_DISRUPTED check the cmd->retries/cmd->allowed.
14
15 Signed-off-by: Mike Christie <mchristi@redhat.com>
16 Signed-off-by: James Bottomley <James.Bottomley@HansenPartnership.com>
17 Signed-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