提交 ad3d9d7e 编写于 作者: J Jens Axboe

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: NJeremy Fitzhardinge <jeremy@goop.org>
Reported-by: NChris Mason <chris.mason@oracle.com>
Signed-off-by: NJens Axboe <jaxboe@fusionio.com>
上级 401a18e9
...@@ -271,7 +271,7 @@ EXPORT_SYMBOL(blk_start_queue); ...@@ -271,7 +271,7 @@ EXPORT_SYMBOL(blk_start_queue);
**/ **/
void blk_stop_queue(struct request_queue *q) 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); queue_flag_set(QUEUE_FLAG_STOPPED, q);
} }
EXPORT_SYMBOL(blk_stop_queue); EXPORT_SYMBOL(blk_stop_queue);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册