patch-2.4.6 linux/drivers/scsi/scsi_scan.c
Next file: linux/drivers/scsi/scsi_syms.c
Previous file: linux/drivers/scsi/scsi_proc.c
Back to the patch index
Back to the overall index
- Lines: 46
- Date:
Tue Jun 12 11:17:17 2001
- Orig file:
v2.4.5/linux/drivers/scsi/scsi_scan.c
- Orig date:
Sun Apr 8 10:10:01 2001
diff -u --recursive --new-file v2.4.5/linux/drivers/scsi/scsi_scan.c linux/drivers/scsi/scsi_scan.c
@@ -328,8 +328,8 @@
}
/*
- * We need to increment the counter for this one device so we can track when
- * things are quiet.
+ * We need to increment the counter for this one device so we can track
+ * when things are quiet.
*/
if (hardcoded == 1) {
Scsi_Device *oldSDpnt = SDpnt;
@@ -485,8 +485,8 @@
SDpnt->type = -1;
/*
- * Assume that the device will have handshaking problems, and then fix this
- * field later if it turns out it doesn't
+ * Assume that the device will have handshaking problems, and then fix
+ * this field later if it turns out it doesn't
*/
SDpnt->borken = 1;
SDpnt->was_reset = 0;
@@ -524,9 +524,21 @@
SCSI_LOG_SCAN_BUS(3, printk("scsi: INQUIRY %s with code 0x%x\n",
SRpnt->sr_result ? "failed" : "successful", SRpnt->sr_result));
+ /*
+ * Now that we don't do TEST_UNIT_READY anymore, we must be prepared
+ * for media change conditions here, so cannot require zero result.
+ */
if (SRpnt->sr_result) {
- scsi_release_request(SRpnt);
- return 0; /* assume no peripheral if any sort of error */
+ if ((driver_byte(SRpnt->sr_result) & DRIVER_SENSE) != 0 &&
+ (SRpnt->sr_sense_buffer[2] & 0xf) == UNIT_ATTENTION &&
+ SRpnt->sr_sense_buffer[12] == 0x28 &&
+ SRpnt->sr_sense_buffer[13] == 0) {
+ /* not-ready to ready transition - good */
+ } else {
+ /* assume no peripheral if any other sort of error */
+ scsi_release_request(SRpnt);
+ return 0;
+ }
}
/*
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)