Any comments would be appreciated. This is a re-push of a patch I submitted 20 July which hasn't been merged as of 2.6.9-rc1-mm5/2.6.9-rc2. Description: msleep_interruptible() is used instead of pg_sleep() to guarantee the task delays as expected. The defintion of pg_sleep() is also modified to use set_current_state() instead of direct assignment. Signed-off-by: Nishanth Aravamudan Signed-off-by: Domen Puncer --- kj-domen/drivers/block/paride/pg.c | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) diff -puN drivers/block/paride/pg.c~msleep_interruptible-drivers_block_pg drivers/block/paride/pg.c --- kj/drivers/block/paride/pg.c~msleep_interruptible-drivers_block_pg 2004-12-25 01:34:41.000000000 +0100 +++ kj-domen/drivers/block/paride/pg.c 2004-12-25 01:34:41.000000000 +0100 @@ -295,7 +295,7 @@ static inline u8 DRIVE(struct pg *dev) static void pg_sleep(int cs) { - current->state = TASK_INTERRUPTIBLE; + set_current_state(TASK_INTERRUPTIBLE); schedule_timeout(cs); } @@ -409,7 +409,7 @@ static int pg_reset(struct pg *dev) write_reg(dev, 6, DRIVE(dev)); write_reg(dev, 7, 8); - pg_sleep(20 * HZ / 1000); + msleep_interruptible(20); k = 0; while ((k++ < PG_RESET_TMO) && (status_reg(dev) & STAT_BUSY)) _