I would appreciate any comments from the janitor@sternweltens list. This is one (of
many) cases where I made a decision about replacing
set_current_state(TASK_INTERRUPTIBLE);
schedule_timeout(some_time);
with
msleep(jiffies_to_msecs(some_time));
msleep() is not exactly the same as the previous code, but I only did
this replacement where I thought long delays were *desired*. If this is
not the case here, then just disregard this patch.
Thanks,
Nish
Description: Replace schedule_timeout() with msleep() to guarantee the
task delays for the desired time.
Signed-off-by: Maximilian Attems <[email protected]>
---
linux-2.6.9-rc1-bk7-max/drivers/message/fusion/mptscsih.c | 9 +++------
1 files changed, 3 insertions(+), 6 deletions(-)
diff -puN drivers/message/fusion/mptscsih.c~msleep-drivers_message_fusion_mptscsih drivers/message/fusion/mptscsih.c
--- linux-2.6.9-rc1-bk7/drivers/message/fusion/mptscsih.c~msleep-drivers_message_fusion_mptscsih 2004-09-01 19:35:24.000000000 +0200
+++ linux-2.6.9-rc1-bk7-max/drivers/message/fusion/mptscsih.c 2004-09-01 19:35:24.000000000 +0200
@@ -2623,8 +2623,7 @@ mptscsih_tm_pending_wait(MPT_SCSI_HOST *
break;
}
spin_unlock_irqrestore(&hd->ioc->FreeQlock, flags);
- set_current_state(TASK_INTERRUPTIBLE);
- schedule_timeout(HZ/4);
+ msleep(250);
} while (--loop_count);
return status;
@@ -4788,8 +4787,7 @@ mptscsih_domainValidation(void *arg)
}
spin_unlock_irqrestore(&dvtaskQ_lock, flags);
- set_current_state(TASK_INTERRUPTIBLE);
- schedule_timeout(HZ/4);
+ msleep(250);
/* DV only to SCSI adapters */
if ((int)ioc->chip_type <= (int)FC929)
@@ -4837,8 +4835,7 @@ mptscsih_domainValidation(void *arg)
hd->ioc->spi_data.dvStatus[id] |= MPT_SCSICFG_DV_PENDING;
hd->ioc->spi_data.dvStatus[id] &= ~MPT_SCSICFG_NEED_DV;
- set_current_state(TASK_INTERRUPTIBLE);
- schedule_timeout(HZ/4);
+ msleep(250);
/* If hidden phys disk, block IO's to all
* raid volumes
_