aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi
diff options
context:
space:
mode:
authorHannes Reinecke <hare@suse.de>2010-07-29 04:10:16 -0400
committerJames Bottomley <James.Bottomley@suse.de>2010-08-11 00:51:20 -0400
commit3eb3a92851857e6de92ad0c57bf7046ac4f58671 (patch)
tree1788f9d184586746f119c8a7fe9f7dc49811ad5a /drivers/scsi
parent7e41dfdaf11a45ab4f4dfc444a7d42bf79dd9356 (diff)
[SCSI] Return NEEDS_RETRY for eh commands with status BUSY
When the transport is busy and we're sending an EH command drivers occasionally return 'BUSY'. As this in most cases is the TUR command sent as part of the error recovery this is a sure way to make the error recovery escalate. Returning 'NEEDS_RETRY' here will just retry the TUR command and eventually abort the original command, thus making error handling far smoother. Signed-off-by: Hannes Reinecke <hare@suse.de> Signed-off-by: James Bottomley <James.Bottomley@suse.de>
Diffstat (limited to 'drivers/scsi')
-rw-r--r--drivers/scsi/scsi_error.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/drivers/scsi/scsi_error.c b/drivers/scsi/scsi_error.c
index 2bf98469dc4c..cfd01ef8a9d4 100644
--- a/drivers/scsi/scsi_error.c
+++ b/drivers/scsi/scsi_error.c
@@ -481,6 +481,7 @@ static int scsi_eh_completed_normally(struct scsi_cmnd *scmd)
481 scsi_handle_queue_full(scmd->device); 481 scsi_handle_queue_full(scmd->device);
482 /* fall through */ 482 /* fall through */
483 case BUSY: 483 case BUSY:
484 return NEEDS_RETRY;
484 default: 485 default:
485 return FAILED; 486 return FAILED;
486 } 487 }