blk-mq: Wake tasks entering queue on dying
When the queue is set to dying, wake up tasks that are waiting on frozen queue so they realize it is dying and abandon their request. Signed-off-by: Keith Busch <keith.busch@intel.com> Modified by me to add a code comment on the need for the wakeup. Signed-off-by: Jens Axboe <axboe@fb.com>
This commit is contained in:
parent
17ded32070
commit
3fd5940cb2
|
@ -160,6 +160,13 @@ void blk_mq_wake_waiters(struct request_queue *q)
|
||||||
queue_for_each_hw_ctx(q, hctx, i)
|
queue_for_each_hw_ctx(q, hctx, i)
|
||||||
if (blk_mq_hw_queue_mapped(hctx))
|
if (blk_mq_hw_queue_mapped(hctx))
|
||||||
blk_mq_tag_wakeup_all(hctx->tags, true);
|
blk_mq_tag_wakeup_all(hctx->tags, true);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* If we are called because the queue has now been marked as
|
||||||
|
* dying, we need to ensure that processes currently waiting on
|
||||||
|
* the queue are notified as well.
|
||||||
|
*/
|
||||||
|
wake_up_all(&q->mq_freeze_wq);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool blk_mq_can_queue(struct blk_mq_hw_ctx *hctx)
|
bool blk_mq_can_queue(struct blk_mq_hw_ctx *hctx)
|
||||||
|
|
Loading…
Reference in a new issue