From ad3d9d7ede04a9c71be7a9fe1a23961817f371f7 Mon Sep 17 00:00:00 2001 From: Jens Axboe Date: Fri, 25 Mar 2011 16:58:59 +0100 Subject: [PATCH] block: fix issue with calling blk_stop_queue() from the request_fn handler When the queue work handler was converted to delayed work, the stopping was inadvertently made sync as well. Change this back to being async stop, using __cancel_delayed_work() instead of cancel_delayed_work(). Reported-by: Jeremy Fitzhardinge Reported-by: Chris Mason Signed-off-by: Jens Axboe --- block/blk-core.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/block/blk-core.c b/block/blk-core.c index 64e96ee1d6af..e0a062363937 100644 --- a/block/blk-core.c +++ b/block/blk-core.c @@ -271,7 +271,7 @@ EXPORT_SYMBOL(blk_start_queue); **/ void blk_stop_queue(struct request_queue *q) { - cancel_delayed_work(&q->delay_work); + __cancel_delayed_work(&q->delay_work); queue_flag_set(QUEUE_FLAG_STOPPED, q); } EXPORT_SYMBOL(blk_stop_queue);