patch-2.0.31 linux/drivers/scsi/sd.c
Next file: linux/drivers/scsi/sr.c
Previous file: linux/drivers/scsi/scsiiom.c
Back to the patch index
Back to the overall index
- Lines: 44
- Date:
Wed Aug 13 18:46:08 1997
- Orig file:
v2.0.30/linux/drivers/scsi/sd.c
- Orig date:
Fri Feb 28 15:14:18 1997
diff -u --recursive --new-file v2.0.30/linux/drivers/scsi/sd.c linux/drivers/scsi/sd.c
@@ -58,8 +58,8 @@
* Time out in seconds for disks and Magneto-opticals (which are slower).
*/
-#define SD_TIMEOUT (15 * HZ)
-#define SD_MOD_TIMEOUT (15 * HZ)
+#define SD_TIMEOUT (20 * HZ)
+#define SD_MOD_TIMEOUT (25 * HZ)
#define CLUSTERABLE_DEVICE(SC) (SC->host->use_clustering && \
SC->device->type != TYPE_MOD)
@@ -966,7 +966,14 @@
if(!rscsi_disks[target].device->removable) return 0;
inode.i_rdev = full_dev; /* This is all we really need here */
- retval = sd_ioctl(&inode, NULL, SCSI_IOCTL_TEST_UNIT_READY, 0);
+
+ /* Using Start/Stop enables differentiation between drive with
+ * no cartridge loaded - NOT READY, drive with changed cartridge -
+ * UNIT ATTENTION, or with same cartridge - GOOD STATUS.
+ * This also handles drives that auto spin down. eg iomega jaz 1GB
+ * as this will spin up the drive.
+ */
+ retval = sd_ioctl(&inode, NULL, SCSI_IOCTL_START_UNIT, 0);
if(retval){ /* Unable to test, unit probably not ready. This usually
* means there is no disc in the drive. Mark as changed,
@@ -1023,7 +1030,7 @@
spintime = 0;
/* Spin up drives, as required. Only do this at boot time */
- if (!MODULE_FLAG){
+ /* Spinup needs to be done for module loads too. */
do{
retries = 0;
while(retries < 3)
@@ -1096,7 +1103,6 @@
else
printk( "ready\n" );
}
- } /* !MODULE_FLAG */
retries = 3;
do {
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen, slshen@lbl.gov