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

Commit dad7a3be authored by Ming Lei's avatar Ming Lei Committed by Jens Axboe
Browse files

blk-mq: pass correct hctx to blk_mq_try_issue_directly



When direct issue is done on request picked up from plug list,
the hctx need to be updated with the actual hw queue, otherwise
wrong hctx is used and may hurt performance, especially when
wrong SRCU readlock is acquired/released

Reported-by: default avatarBart Van Assche <bart.vanassche@sandisk.com>
Signed-off-by: default avatarMing Lei <ming.lei@redhat.com>
Signed-off-by: default avatarJens Axboe <axboe@fb.com>
parent 3116a23b
Loading
Loading
Loading
Loading
+4 −1
Original line number Diff line number Diff line
@@ -1619,9 +1619,12 @@ static blk_qc_t blk_mq_make_request(struct request_queue *q, struct bio *bio)

		blk_mq_put_ctx(data.ctx);

		if (same_queue_rq)
		if (same_queue_rq) {
			data.hctx = blk_mq_map_queue(q,
					same_queue_rq->mq_ctx->cpu);
			blk_mq_try_issue_directly(data.hctx, same_queue_rq,
					&cookie);
		}
	} else if (q->nr_hw_queues > 1 && is_sync) {
		blk_mq_put_ctx(data.ctx);
		blk_mq_bio_to_request(rq, bio);