> -----Original Message----- > From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] > Sent: Saturday, March 05, 2005 4:45 PM > To: Miller, Mike (OS Dev) > Cc: ISS StorageDev; [EMAIL PROTECTED]; [EMAIL PROTECTED] > Subject: [patch 1/1] block/cciss: replace schedule_timeout() > with msleep() > > > > > I used msleep(10) here under the presumption that the > schedule_timeout(1) was written assuming that HZ=100 (as it > used to be), which is equivalent to 10 milliseconds. If the > desire is actually for 1 ms or the minimal sleep interval, > then the patch can be changed appropriately. A similar > assumption as to the constant delay value was made in the > other replacement, which can also be appropriately adjusted. > > Change the delay logic in pollcomplete() to use msleep() and > time_before(). Instead of assuming schedule_timeout() will > sleep exactly as requested, use msleep(10) to guarantee > minimally 10 millisecond increments and > time_before() to guarantee stopping the loop as close to 20 > seconds as possible. > Also changes another occurrence of schedule_timeout() to msleep(). > TASK_INTERRUPTIBLE is used in this case, but signals are not handled. > > Signed-off-by: Nishanth Aravamudan <[EMAIL PROTECTED]> > Acked-by: Mike Miller <[EMAIL PROTECTED]> > Signed-off-by: Domen Puncer <[EMAIL PROTECTED]>
Please consider the following patch for inclusion. Thanks, mikem --- kj-domen/drivers/block/cciss.c | 17 +++++++---------- 1 files changed, 7 insertions(+), 10 deletions(-) diff -puN drivers/block/cciss.c~msleep-drivers_block_cciss drivers/block/cciss.c --- kj/drivers/block/cciss.c~msleep-drivers_block_cciss 2005-03-05 16:10:44.000000000 +0100 +++ kj-domen/drivers/block/cciss.c 2005-03-05 16:10:44.000000000 +0100 @@ -1702,17 +1702,15 @@ static int cciss_revalidate(struct gendi static unsigned long pollcomplete(int ctlr) { unsigned long done; - int i; + unsigned long end_jiffies = jiffies + 20 * HZ; /* Wait (up to 20 seconds) for a command to complete */ - - for (i = 20 * HZ; i > 0; i--) { + while (time_before(jiffies,end_jiffies)) { done = hba[ctlr]->access.command_completed(hba[ctlr]); - if (done == FIFO_EMPTY) { - set_current_state(TASK_UNINTERRUPTIBLE); - schedule_timeout(1); - } else - return (done); + if (done == FIFO_EMPTY) + msleep(10); + else + return done; } /* Invalid address to tell caller we ran out of time */ return 1; @@ -2486,8 +2484,7 @@ static int cciss_pci_init(ctlr_info_t *c if (!(readl(c->vaddr + SA5_DOORBELL) & CFGTBL_ChangeReq)) break; /* delay and try again */ - set_current_state(TASK_INTERRUPTIBLE); - schedule_timeout(10); + msleep(100); } #ifdef CCISS_DEBUG _ - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/