Teach blk_congestion_wait() to return the number of jiffies remaining. This is for debug, but it is also nicely consistent. --- drivers/block/ll_rw_blk.c | 10 +++++++--- include/linux/blkdev.h | 2 +- 2 files changed, 8 insertions(+), 4 deletions(-) diff -puN drivers/block/ll_rw_blk.c~blk_congestion_wait-return-remaining drivers/block/ll_rw_blk.c --- 25/drivers/block/ll_rw_blk.c~blk_congestion_wait-return-remaining 2004-02-02 22:41:22.000000000 -0800 +++ 25-akpm/drivers/block/ll_rw_blk.c 2004-02-02 22:41:22.000000000 -0800 @@ -1891,18 +1891,22 @@ EXPORT_SYMBOL(blk_put_request); * Waits for up to @timeout jiffies for a queue (any queue) to exit congestion. * If no queues are congested then just wait for the next request to be * returned. + * + * Returns the number of jiffies remaining, this is zero, unless we returned + * before @timeout expired. */ -void blk_congestion_wait(int rw, long timeout) +long blk_congestion_wait(int rw, long timeout) { + long ret; DEFINE_WAIT(wait); wait_queue_head_t *wqh = &congestion_wqh[rw]; blk_run_queues(); prepare_to_wait(wqh, &wait, TASK_UNINTERRUPTIBLE); - io_schedule_timeout(timeout); + ret = io_schedule_timeout(timeout); finish_wait(wqh, &wait); + return ret; } - EXPORT_SYMBOL(blk_congestion_wait); /* diff -puN include/linux/blkdev.h~blk_congestion_wait-return-remaining include/linux/blkdev.h --- 25/include/linux/blkdev.h~blk_congestion_wait-return-remaining 2004-02-02 22:41:22.000000000 -0800 +++ 25-akpm/include/linux/blkdev.h 2004-02-02 22:41:22.000000000 -0800 @@ -586,7 +586,7 @@ extern int blk_queue_init_tags(request_q extern void blk_queue_free_tags(request_queue_t *); extern int blk_queue_resize_tags(request_queue_t *, int); extern void blk_queue_invalidate_tags(request_queue_t *); -extern void blk_congestion_wait(int rw, long timeout); +extern long blk_congestion_wait(int rw, long timeout); extern void blk_rq_bio_prep(request_queue_t *, struct request *, struct bio *); extern void blk_rq_prep_restart(struct request *); _