On Mon, Oct 17, 2022 at 03:41:15PM -0700, Paul E. McKenney wrote: > Then the big question is "how long do the SRCU readers run?" > > If all of the readers ran for exactly the same duration, there would be > little point in having more than one srcu_struct. The SRCU readers are the I/O dispatch, which will have quite similar runtimes for the different queues. > If the kernel knew up front how long the SRCU readers for a given entry > would run, it could provide an srcu_struct structure for each duration. > For a (fanciful) example, you could have one srcu_struct structure for > SSDs, another for rotating rust, a third for LAN-attached storage, and > a fourth for WAN-attached storage. Maybe a fifth for lunar-based storage. All the different request_queues in a tag_set are for the same device. There might be some corner cases like storare arrays where they have different latencies. But we're not even waiting for the I/O completion here, this just protects the submission. > Does that help, or am I off in the weeds here? I think this was very helpful, and at least to be moving the srcu_struct to the tag_set sounds like a good idea to explore. Ming, anything I might have missed?