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

Commit 1b792f2f authored by Jens Axboe's avatar Jens Axboe
Browse files

blk-mq: add flag for drivers wanting blocking ->queue_rq()



If a driver sets BLK_MQ_F_BLOCKING, it is allowed to block in its
->queue_rq() handler. For that case, blk-mq ensures that we always
calls it from a safe context.

Signed-off-by: default avatarJens Axboe <axboe@fb.com>
Tested-by: default avatarJosef Bacik <jbacik@fb.com>
parent 63581af3
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -908,7 +908,7 @@ void blk_mq_run_hw_queue(struct blk_mq_hw_ctx *hctx, bool async)
	    !blk_mq_hw_queue_mapped(hctx)))
		return;

	if (!async) {
	if (!async && !(hctx->flags & BLK_MQ_F_BLOCKING)) {
		int cpu = get_cpu();
		if (cpumask_test_cpu(cpu, hctx->cpumask)) {
			__blk_mq_run_hw_queue(hctx);
+1 −0
Original line number Diff line number Diff line
@@ -155,6 +155,7 @@ enum {
	BLK_MQ_F_TAG_SHARED	= 1 << 1,
	BLK_MQ_F_SG_MERGE	= 1 << 2,
	BLK_MQ_F_DEFER_ISSUE	= 1 << 4,
	BLK_MQ_F_BLOCKING	= 1 << 5,
	BLK_MQ_F_ALLOC_POLICY_START_BIT = 8,
	BLK_MQ_F_ALLOC_POLICY_BITS = 1,