Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 3fd5940c authored by Keith Busch's avatar Keith Busch Committed by Jens Axboe
Browse files

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: default avatarKeith Busch <keith.busch@intel.com>

Modified by me to add a code comment on the need for the wakeup.

Signed-off-by: default avatarJens Axboe <axboe@fb.com>
parent 17ded320
Loading
Loading
Loading
Loading
+7 −0
Original line number Diff line number Diff line
@@ -160,6 +160,13 @@ void blk_mq_wake_waiters(struct request_queue *q)
	queue_for_each_hw_ctx(q, hctx, i)
		if (blk_mq_hw_queue_mapped(hctx))
			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)