[PATCH] sonycd535: replace schedule_timeout() with msleep() From: Nishanth Aravamudan Use msleep() instead of schedule_timeout() to guarantee the task delays as expected. Although TASK_INTERRUPTIBLE is used in the original code, schedule_timeout() return conditions for such a state are not checked appropriately; therefore, TASK_UNINTERRUPTIBLE should be ok (and, hence, msleep()). Signed-off-by: Nishanth Aravamudan Signed-off-by: Domen Puncer Signed-off-by: Alexey Dobriyan Index: linux-kj/drivers/cdrom/sonycd535.c =================================================================== --- linux-kj.orig/drivers/cdrom/sonycd535.c 2005-10-28 16:25:14.000000000 +0400 +++ linux-kj/drivers/cdrom/sonycd535.c 2005-10-28 16:26:15.000000000 +0400 @@ -129,6 +129,7 @@ #include #include #include +#include #define REALLY_SLOW_IO #include @@ -896,9 +897,8 @@ do_cdu535_request(request_queue_t * q) } if (readStatus == BAD_STATUS) { /* Sleep for a while, then retry */ - set_current_state(TASK_INTERRUPTIBLE); spin_unlock_irq(&sonycd535_lock); - schedule_timeout(RETRY_FOR_BAD_STATUS*HZ/10); + msleep(RETRY_FOR_BAD_STATUS*100); spin_lock_irq(&sonycd535_lock); } #if DEBUG > 0