On Thu, Apr 29, 2021 at 03:37:47PM +0800, Ming Lei wrote: > > > 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. > > BLK_MQ_F_BLOCKING can be called from submitting context, see > blk_mq_try_issue_directly(). The all drivers setting it have a problem, as the blk-mq core sets BLK_MQ_F_BLOCKING for all of them. The right fix would be to not make it block for REQ_NOWAIT I/O..