On Thu, Oct 20, 2022 at 12:56:03PM +0200, Christoph Hellwig wrote: > All I/O submissions have fairly similar latencies, and a tagset-wide > quiesce is a fairly common operation. Becuase there are a lot less s/Becuase/Because > @@ -501,6 +502,8 @@ enum hctx_type { > * @tag_list_lock: Serializes tag_list accesses. > * @tag_list: List of the request queues that use this tag set. See also > * request_queue.tag_set_list. > + * @srcu: Use as lock when type of the request queue is blocking > + * (BLK_MQ_F_BLOCKING). Must be the last member Since you're not dealing with flexible arrays anymore, I don't think srcu strictly needs to be the last member. The code looks great, though! Reviewed-by: Keith Busch <kbusch@xxxxxxxxxx> > */ > struct blk_mq_tag_set { > struct blk_mq_queue_map map[HCTX_MAX_TYPES]; > @@ -521,6 +524,7 @@ struct blk_mq_tag_set { > > struct mutex tag_list_lock; > struct list_head tag_list; > + struct srcu_struct srcu; > };