Skip to content

Commit

Permalink
[PATCH] USB Storage: retry hard errors
Browse files Browse the repository at this point in the history
This patch started life as as527, and was rediffed by me.

Since the IDE interface doesn't convey much information about types of
errors, many USB-IDE adapters report all low-level errors with SK = 0x04,
which is supposed to be used only for non-recoverable errors.  As a result
the SCSI midlayer doesn't retry the command.  But quite often a retry
would succeed, whereas an unnecessary retry doesn't really hurt anything.

This patch uses a recently-implemented flag to tell the SCSI midlayer that
such hardware errors should be retried.

Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
Signed-off-by: Matthew Dharm <mdharm-usb@one-eyed-alien.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
  • Loading branch information
Matthew Dharm authored and Greg Kroah-Hartman committed Jun 27, 2005
1 parent 4d07ef7 commit 86dbde9
Showing 1 changed file with 9 additions and 0 deletions.
9 changes: 9 additions & 0 deletions drivers/usb/storage/scsiglue.c
Original file line number Diff line number Diff line change
Expand Up @@ -155,6 +155,15 @@ static int slave_configure(struct scsi_device *sdev)
* If this device makes that mistake, tell the sd driver. */
if (us->flags & US_FL_FIX_CAPACITY)
sdev->fix_capacity = 1;

/* USB-IDE bridges tend to report SK = 0x04 (Non-recoverable
* Hardware Error) when any low-level error occurs,
* recoverable or not. Setting this flag tells the SCSI
* midlayer to retry such commands, which frequently will
* succeed and fix the error. The worst this can lead to
* is an occasional series of retries that will all fail. */
sdev->retry_hwerror = 1;

} else {

/* Non-disk-type devices don't need to blacklist any pages
Expand Down

0 comments on commit 86dbde9

Please sign in to comment.