diff options
author | Hannes Reinecke <hare@suse.de> | 2010-07-29 04:10:16 -0400 |
---|---|---|
committer | James Bottomley <James.Bottomley@suse.de> | 2010-08-11 00:51:20 -0400 |
commit | 3eb3a92851857e6de92ad0c57bf7046ac4f58671 (patch) | |
tree | 1788f9d184586746f119c8a7fe9f7dc49811ad5a /drivers/scsi | |
parent | 7e41dfdaf11a45ab4f4dfc444a7d42bf79dd9356 (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.c | 1 |
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 | } |