Hazard testing uncovered yet another bug in sd. Under heavy reset activity the retry counter might be exhausted and the command will be returned with sense UNIT_ATTENTION/0x29/00 (POWER ON, RESET, OR BUS DEVICE RESET OCCURRED). In those cases we should just increase the retry counter again, retrying one more to clear up this Unit Attention state. Signed-off-by: Hannes Reinecke <hare@xxxxxxx> diff --git a/drivers/scsi/sd.c b/drivers/scsi/sd.c index 1962bea..7d75a21 100644 --- a/drivers/scsi/sd.c +++ b/drivers/scsi/sd.c @@ -1454,8 +1454,15 @@ static int read_capacity_10(struct scsi_disk *sdkp, struct scsi_device *sdp, if (media_not_present(sdkp, &sshdr)) return -ENODEV; - if (the_result) + if (the_result) { sense_valid = scsi_sense_valid(&sshdr); + if (sense_valid && + sshdr.sense_key == UNIT_ATTENTION && + sshdr.asc = 0x29 && sshdr.asq == 0x00) + /* Device reset might occur several times, + * give it one more chance */ + retries++; + } retries--; } while (the_result && retries); -- To unsubscribe from this list: send the line "unsubscribe linux-scsi" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html