> -----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/

Reply via email to