On Wed, Apr 28, 2021 at 10:32:38AM +0800, Ming Lei wrote: > > 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.