On 9/8/20 10:15 AM, Ming Lei wrote: > drivers that have shared tagsets may need to quiesce potentially a lot > of request queues that all share a single tagset (e.g. nvme). Add an interface > to quiesce all the queues on a given tagset. This interface is useful because > it can speedup the quiesce by doing it in parallel. > > For tagsets that have BLK_MQ_F_BLOCKING set, we kill request queue's dispatch > percpu-refcount such that all of them wait for the counter becoming zero. For > tagsets that don't have BLK_MQ_F_BLOCKING set, we simply call a single > synchronize_rcu as this is sufficient. > > This patch is against Sagi's original post. > Signed-off-by: Ming Lei <ming.lei@xxxxxxxxxx> > Signed-off-by: Sagi <ming.lei@xxxxxxxxxx> > Cc: Sagi Grimberg <sagi@xxxxxxxxxxx> > Cc: Bart Van Assche <bvanassche@xxxxxxx> > Cc: Johannes Thumshirn <Johannes.Thumshirn@xxxxxxx> > Cc: Chao Leng <lengchao@xxxxxxxxxx> > --- > block/blk-mq.c | 68 ++++++++++++++++++++++++++++++++---------- > include/linux/blk-mq.h | 2 ++ > 2 files changed, 55 insertions(+), 15 deletions(-) > Makes one wonder for which devices we _do not_ have a shared tagset :-) Reviewed-by: Hannes Reinecke <hare@xxxxxxx> Cheers, Hannes -- Dr. Hannes Reinecke Kernel Storage Architect hare@xxxxxxx +49 911 74053 688 SUSE Software Solutions Germany GmbH, Maxfeldstr. 5, 90409 Nürnberg HRB 36809 (AG Nürnberg), GF: Felix Imendörffer