From: Jens Axboe Date: Fri, 25 Mar 2011 15:58:59 +0000 (+0100) Subject: block: fix issue with calling blk_stop_queue() from the request_fn handler X-Git-Tag: v2.6.39-rc1~74^2 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=ad3d9d7ede04a9c71be7a9fe1a23961817f371f7;p=platform%2Fkernel%2Flinux-3.10.git 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 --- diff --git a/block/blk-core.c b/block/blk-core.c index 64e96ee..e0a0623 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);