Commit 939c2288 authored by Mike Christie's avatar Mike Christie Committed by James Bottomley

[SCSI] scsi_error regression: Fix idempotent command handling

Drivers want to be able to return DID_TRANSPORT_DISRUPTED and
have it do the right thing for commands like tape and passthrouh
as far as retries go. The LLDs previously used DID_BUS_BUSY or DID_ERROR
which followed the cmd->retries limit, but DID_TRANSPORT_DISRUPTED
was skipping that check so it could have caused a problem with tape
commands.

This patch has DID_TRANSPORT_DISRUPTED check the cmd->retries/cmd->allowed.
Signed-off-by: default avatarMike Christie <mchristi@redhat.com>
Signed-off-by: default avatarJames Bottomley <James.Bottomley@HansenPartnership.com>
parent d94ce6c6
...@@ -1340,9 +1340,10 @@ int scsi_decide_disposition(struct scsi_cmnd *scmd) ...@@ -1340,9 +1340,10 @@ int scsi_decide_disposition(struct scsi_cmnd *scmd)
* LLD/transport was disrupted during processing of the IO. * LLD/transport was disrupted during processing of the IO.
* The transport class is now blocked/blocking, * The transport class is now blocked/blocking,
* and the transport will decide what to do with the IO * and the transport will decide what to do with the IO
* based on its timers and recovery capablilities. * based on its timers and recovery capablilities if
* there are enough retries.
*/ */
return ADD_TO_MLQUEUE; goto maybe_retry;
case DID_TRANSPORT_FAILFAST: case DID_TRANSPORT_FAILFAST:
/* /*
* The transport decided to failfast the IO (most likely * The transport decided to failfast the IO (most likely
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment