patch-2.4.7 linux/drivers/scsi/scsi_error.c
Next file: linux/drivers/scsi/scsi_ioctl.c
Previous file: linux/drivers/scsi/scsi.h
Back to the patch index
Back to the overall index
- Lines: 35
- Date:
Thu Jul 5 11:28:17 2001
- Orig file:
v2.4.6/linux/drivers/scsi/scsi_error.c
- Orig date:
Sun Mar 4 14:30:27 2001
diff -u --recursive --new-file v2.4.6/linux/drivers/scsi/scsi_error.c linux/drivers/scsi/scsi_error.c
@@ -427,7 +427,8 @@
memcpy((void *) SCpnt->cmnd, (void *) generic_sense,
sizeof(generic_sense));
- SCpnt->cmnd[1] = SCpnt->lun << 5;
+ if (SCpnt->device->scsi_level <= SCSI_2)
+ SCpnt->cmnd[1] = SCpnt->lun << 5;
scsi_result = (!SCpnt->host->hostt->unchecked_isa_dma)
? &scsi_result0[0] : kmalloc(512, GFP_ATOMIC | GFP_DMA);
@@ -496,7 +497,8 @@
memcpy((void *) SCpnt->cmnd, (void *) tur_command,
sizeof(tur_command));
- SCpnt->cmnd[1] = SCpnt->lun << 5;
+ if (SCpnt->device->scsi_level <= SCSI_2)
+ SCpnt->cmnd[1] = SCpnt->lun << 5;
/*
* Zero the sense buffer. The SCSI spec mandates that any
@@ -1175,6 +1177,14 @@
*/
if (SCpnt->device->expecting_cc_ua) {
SCpnt->device->expecting_cc_ua = 0;
+ return NEEDS_RETRY;
+ }
+ /*
+ * If the device is in the process of becoming ready, we
+ * should retry.
+ */
+ if ((SCpnt->sense_buffer[12] == 0x04) &&
+ (SCpnt->sense_buffer[13] == 0x01)) {
return NEEDS_RETRY;
}
return SUCCESS;
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)