|
@@ -293,8 +293,16 @@ static int scsi_check_sense(struct scsi_cmnd *scmd)
|
|
|
* so that we can deal with it there.
|
|
|
*/
|
|
|
if (scmd->device->expecting_cc_ua) {
|
|
|
- scmd->device->expecting_cc_ua = 0;
|
|
|
- return NEEDS_RETRY;
|
|
|
+ /*
|
|
|
+ * Because some device does 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) {
|
|
|
+ scmd->device->expecting_cc_ua = 0;
|
|
|
+ return NEEDS_RETRY;
|
|
|
+ }
|
|
|
}
|
|
|
/*
|
|
|
* if the device is in the process of becoming ready, we
|