blk-mq: don't insert passthrough request into sw queue
authorMing Lei <ming.lei@redhat.com>
Wed, 21 Jun 2023 13:22:08 +0000 (21:22 +0800)
committerJens Axboe <axboe@kernel.dk>
Wed, 21 Jun 2023 13:48:34 +0000 (07:48 -0600)
commit2293cae703cda162684ae966db6b1b4a11b5e88f
treed37e301832e0d3233580d72dbc98f618bd389ff7
parent72ef02b8dfa009029fa713e8a731a92d27d14e35
blk-mq: don't insert passthrough request into sw queue

In case of real io scheduler, q->elevator is set, so blk_mq_run_hw_queue()
may just check if scheduler queue has request to dispatch, see
__blk_mq_sched_dispatch_requests(). Then IO hang may be caused because
all passthorugh requests may stay in sw queue.

And any passthrough request should have been inserted to hctx->dispatch
always.

Reported-by: Guangwu Zhang <guazhang@redhat.com>
Fixes: d97217e7f024 ("blk-mq: don't queue plugged passthrough requests into scheduler")
Signed-off-by: Ming Lei <ming.lei@redhat.com>
Link: https://lore.kernel.org/r/20230621132208.1142318-1-ming.lei@redhat.com
Signed-off-by: Jens Axboe <axboe@kernel.dk>
block/blk-mq.c