On Wed, Nov 17, 2021 at 07:02:27PM -0700, Keith Busch wrote: > On Thu, Nov 18, 2021 at 08:18:29AM +0800, Ming Lei wrote: > > On Wed, Nov 17, 2021 at 12:41:01PM -0800, Keith Busch wrote: > > > On Tue, Nov 16, 2021 at 08:38:04PM -0700, Jens Axboe wrote: > > > > If we have a list of requests in our plug list, send it to the driver in > > > > one go, if possible. The driver must set mq_ops->queue_rqs() to support > > > > this, if not the usual one-by-one path is used. > > > > > > It looks like we still need to sync with the request_queue quiesce flag. > > > > Basically it is same with my previous post[1], but the above patch doesn't > > handle request queue allocation/freeing correctly in case of BLK_MQ_F_BLOCKING. > > Thanks for the pointer. I also thought it may be just as well that blocking > dispatchers don't get to use the optimized rqlist queueing, Yeah, that is fine, but nvme-tcp may not benefit from the ->queue_rq() optimization. > which would simplify quiesce to the normal rcu usage. Normal dispatch code still need to check quiesced for blocking queue, so srcu is still needed, not see easier way than srcu yet. Years ago, I tried to replace the srcu with percpu-refcnt, which is still more complicated than srcu, but srcu_index can be dropped. Thanks, Ming