aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi/scsi_error.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/scsi/scsi_error.c')
-rw-r--r--drivers/scsi/scsi_error.c15
1 files changed, 14 insertions, 1 deletions
diff --git a/drivers/scsi/scsi_error.c b/drivers/scsi/scsi_error.c
index fecefa05cb62..5bf8be21a165 100644
--- a/drivers/scsi/scsi_error.c
+++ b/drivers/scsi/scsi_error.c
@@ -1290,7 +1290,20 @@ int scsi_decide_disposition(struct scsi_cmnd *scmd)
1290 1290
1291 case DID_REQUEUE: 1291 case DID_REQUEUE:
1292 return ADD_TO_MLQUEUE; 1292 return ADD_TO_MLQUEUE;
1293 1293 case DID_TRANSPORT_DISRUPTED:
1294 /*
1295 * LLD/transport was disrupted during processing of the IO.
1296 * The transport class is now blocked/blocking,
1297 * and the transport will decide what to do with the IO
1298 * based on its timers and recovery capablilities.
1299 */
1300 return ADD_TO_MLQUEUE;
1301 case DID_TRANSPORT_FAILFAST:
1302 /*
1303 * The transport decided to failfast the IO (most likely
1304 * the fast io fail tmo fired), so send IO directly upwards.
1305 */
1306 return SUCCESS;
1294 case DID_ERROR: 1307 case DID_ERROR:
1295 if (msg_byte(scmd->result) == COMMAND_COMPLETE && 1308 if (msg_byte(scmd->result) == COMMAND_COMPLETE &&
1296 status_byte(scmd->result) == RESERVATION_CONFLICT) 1309 status_byte(scmd->result) == RESERVATION_CONFLICT)