Use msleep() instead of schedule_timeout() to guarantee the task
delays as expected. The current code wishes to sleep for 1 jiffy, but I am not
sure if this is actually intended, as with the change to HZ=1000, the time
equivalent of 1 jiffy changed from 10ms to 1ms. I have assumed the former in
this case; however the patch can be easily changed to assume the latter.
Signed-off-by: Nishanth Aravamudan <[email protected]>
Signed-off-by: Domen Puncer <[email protected]>
---
kj-domen/drivers/block/xd.c | 7 +++----
1 files changed, 3 insertions(+), 4 deletions(-)
diff -puN drivers/block/xd.c~msleep-drivers_block_xd2 drivers/block/xd.c
--- kj/drivers/block/xd.c~msleep-drivers_block_xd2 2005-03-05 16:10:47.000000000 +0100
+++ kj-domen/drivers/block/xd.c 2005-03-05 16:10:47.000000000 +0100
@@ -47,6 +47,7 @@
#include <linux/wait.h>
#include <linux/blkdev.h>
#include <linux/blkpg.h>
+#include <linux/delay.h>
#include <asm/system.h>
#include <asm/io.h>
@@ -529,10 +530,8 @@ static inline u_char xd_waitport (u_shor
int success;
xdc_busy = 1;
- while ((success = ((inb(port) & mask) != flags)) && time_before(jiffies, expiry)) {
- set_current_state(TASK_UNINTERRUPTIBLE);
- schedule_timeout(1);
- }
+ while ((success = ((inb(port) & mask) != flags)) && time_before(jiffies, expiry))
+ msleep(10);
xdc_busy = 0;
return (success);
}
_