[PATCH] scsi: Allow retry on UNIT_ATTENTION media changed if not CDROM drive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Previous commit dfcf7775815504d13a1d273073810058caf84b9d added
a workaround for CD-ROM drives that were out of spec. This is causing
scsi_check_sense() to return an error instead of NEEDS_RETRY on
some USB thumb drives that return UNIT_ATTENTION Media Changed
(ASC/ASCQ 28/00) after resuming from S3. This can cause mounted
thumb drives to fail on the next access to the filesystem after
S3 resume. This is masked on many systems because udev/dbus event
handlers open the /dev/sd* device before filesystem access and the
open always retries the UNIT_ATTENTION. The fix is to limit the
original workaround to CDROM drives.

Signed-off-by: Al Cooper <alcooperx@xxxxxxxxx>
---
 drivers/scsi/scsi_error.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/drivers/scsi/scsi_error.c b/drivers/scsi/scsi_error.c
index 8afb016..eee95d2 100644
--- a/drivers/scsi/scsi_error.c
+++ b/drivers/scsi/scsi_error.c
@@ -525,12 +525,13 @@ static int scsi_check_sense(struct scsi_cmnd *scmd)
 		 */
 		if (scmd->device->expecting_cc_ua) {
 			/*
-			 * Because some device does not queue unit
+			 * Because some CDROM drives do not queue unit
 			 * attentions correctly, we carefully check
 			 * additional sense code and qualifier so as
 			 * not to squash media change unit attention.
 			 */
-			if (sshdr.asc != 0x28 || sshdr.ascq != 0x00) {
+			if ((sdev->type != TYPE_ROM) ||
+				(sshdr.asc != 0x28 || sshdr.ascq != 0x00)) {
 				scmd->device->expecting_cc_ua = 0;
 				return NEEDS_RETRY;
 			}
-- 
1.9.0.138.g2de3478

--
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



[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [SCSI Target Devel]     [Linux SCSI Target Infrastructure]     [Kernel Newbies]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Linux IIO]     [Samba]     [Device Mapper]
  Powered by Linux