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
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
13 This patch has DID_TRANSPORT_DISRUPTED check the cmd->retries/cmd->allowed.
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>
20 drivers/scsi/scsi_error.c | 5 +++--
21 1 file changed, 3 insertions(+), 2 deletions(-)
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.
33 - return ADD_TO_MLQUEUE;
35 case DID_TRANSPORT_FAILFAST:
37 * The transport decided to failfast the IO (most likely