On 1/24/20 2:51 AM, Stefan Metzmacher wrote: > Hi Jens, > >> Sometimes an applications wants to use multiple smaller rings, because >> it's more efficient than sharing a ring. The downside of that is that >> we'll create the io-wq backend separately for all of them, while they >> would be perfectly happy just sharing that. >> >> This patchset adds support for that. io_uring_params grows an 'id' field, >> which denotes an identifier for the async backend. If an application >> wants to utilize sharing, it'll simply grab the id from the first ring >> created, and pass it in to the next one and set IORING_SETUP_SHARED. This >> allows efficient sharing of backend resources, while allowing multiple >> rings in the application or library. > > But still all rings need to use the same creds, correct? Right >> Not a huge fan of the IORING_SETUP_SHARED name, we should probably make >> that better (I'm taking suggestions). > > The flag is supposed to be used for the new ring that attached to > the existing workqueue, correct? Yes - any ring setup will return an id in the io_uring_params, attaching to an existing one is done by setting the flag and putting the id number you want to attach to in there. > What about IORING_ATTACH_TO_WORKQUEUE? Trying to avoid something that is too tied to the internals, but workqueue (or wq) is probably generic enough that it can be used. IORING_SETUP_ATTACH_WQ? -- Jens Axboe