On 12/20/21 1:36 PM, Keith Busch wrote: > On Wed, Dec 15, 2021 at 09:24:18AM -0700, Jens Axboe wrote: >> + /* >> + * Peek first request and see if we have a ->queue_rqs() hook. >> + * If we do, we can dispatch the whole plug list in one go. We >> + * already know at this point that all requests belong to the >> + * same queue, caller must ensure that's the case. >> + * >> + * Since we pass off the full list to the driver at this point, >> + * we do not increment the active request count for the queue. >> + * Bypass shared tags for now because of that. >> + */ >> + if (q->mq_ops->queue_rqs && >> + !(rq->mq_hctx->flags & BLK_MQ_F_TAG_QUEUE_SHARED)) { >> + blk_mq_run_dispatch_ops(q, >> + q->mq_ops->queue_rqs(&plug->mq_list)); > > I think we still need to verify the queue isn't quiesced within > blk_mq_run_dispatch_ops()'s rcu protected area, prior to calling > .queue_rqs(). Something like below. Or is this supposed to be the > low-level drivers responsibility now? Yes, that seems very reasonable, and I'd much rather do that than punt it to the driver. Care to send it as a real patch? -- Jens Axboe