On Wed, Apr 28, 2021 at 10:32:38AM +0800, Ming Lei wrote:
quoted
diff --git a/drivers/nvme/host/multipath.c b/drivers/nvme/host/multipath.c
index 4e2c3a6787e9..1d17b2387884 100644
--- a/drivers/nvme/host/multipath.c
+++ b/drivers/nvme/host/multipath.c
@@ -442,6 +442,8 @@ int nvme_mpath_alloc_disk(struct nvme_ctrl *ctrl, struct nvme_ns_head *head)
if (!q)
goto out;
blk_queue_flag_set(QUEUE_FLAG_NONROT, q);
+ blk_queue_flag_set(QUEUE_FLAG_NOWAIT, q);
BLK_MQ_F_BLOCKING is set for nvme-tcp, and the blocking may be done inside
nvme_ns_head_submit_bio(), is that one problem?
The point of BLK_MQ_F_BLOCKING is that ->queue_rq can block, and
because of that it is not called from the submitting context but in
a work queue. nvme-tcp also sets QUEUE_FLAG_NOWAIT, just like all blk-mq
drivers.