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. Not a huge fan of the IORING_SETUP_SHARED name, we should probably make that better (I'm taking suggestions). -- Jens Axboe