]>
Commit | Line | Data |
---|---|---|
2cb7cef9 BS |
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 |