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 <jeremy@goop.org> Reported-by: Chris Mason <chris.mason@oracle.com> Signed-off-by: Jens Axboe <jaxboe@fusionio.com>
This commit is contained in:
parent
401a18e92c
commit
ad3d9d7ede
|
@ -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);
|
||||||
|
|
Loading…
Reference in New Issue