SD: infinite loop.

From: Rogier Wolff (R.E.Wolff@BitWizard.nl)
Date: Thu Jan 25 2001 - 10:28:58 EST


Hi Linus, Alan,

There is a small problem in sd.c: If a disk doesn't become ready, the
loop to try and spin it up doesn't terminate. This can be fixed by
moving one statement up a few lines. Patch below

(the "start of the loop time" variable (spintime_value) is set INSIDE
the loop, which means that the timeout is 100 seconds from 'now' and
stays that way. By moving it up into the "if" above, the value is only
set on the first iteration around the loop. )

        Roger.

--- linux-2.4.0.clean/drivers/scsi/sd.c Fri Oct 27 08:35:48 2000
+++ linux-2.4.0.jungo/drivers/scsi/sd.c Thu Jan 25 16:18:41 2001
@@ -798,9 +798,9 @@
                                 SRpnt->sr_data_direction = SCSI_DATA_READ;
                                 scsi_wait_req(SRpnt, (void *) cmd, (void *) buffer,
                                             0/*512*/, SD_TIMEOUT, MAX_RETRIES);
+ spintime_value = jiffies;
                         }
                         spintime = 1;
- spintime_value = jiffies;
                         time1 = HZ;
                         /* Wait 1 second for next try */
                         do {

-- 
** R.E.Wolff@BitWizard.nl ** http://www.BitWizard.nl/ ** +31-15-2137555 **
*-- BitWizard writes Linux device drivers for any device you may have! --*
* There are old pilots, and there are bold pilots. 
* There are also old, bald pilots. 
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
Please read the FAQ at http://www.tux.org/lkml/



This archive was generated by hypermail 2b29 : Wed Jan 31 2001 - 21:00:21 EST