
Ming Lei of Red Hat who led the work on IO_uring multi-shot support with provided buffers explained on the patch series:
"Add UAPI flag IORING_URING_CMD_MULTISHOT for supporting multishot uring_cmd operations with provided buffer.
This enables drivers to post multiple completion events from a single uring_cmd submission, which is useful for:
- Notifying userspace of device events (e.g., interrupt handling)
- Supporting devices with multiple event sources (e.g., multi-queue devices)
- Avoiding the need for device poll() support when events originate from multiple sources device-wide
The implementation adds two new APIs:
- io_uring_cmd_select_buffer(): selects a buffer from the provided buffer group for multishot uring_cmd
- io_uring_mshot_cmd_post_cqe(): posts a CQE after event data is pushed to the provided buffer
Multishot uring_cmd must be used with buffer select (IOSQE_BUFFER_SELECT) and is mutually exclusive with IORING_URING_CMD_FIXED for now."
The main takeaways being this multi-shot support being useful for better supporting some devices like multi-queue hardware and notifying user-space on device events. The very first user of these new APIs is the user-space block device "ublk" driver.
These patches were queued up this week in the linux-block.git's "for-next" Git branch making it material expected for Linux 6.18 barring any last minute issues from coming up with the code prior to its submission to Linus Torvalds in early October.