IO_uring Ready For uring_cmd Multishot Support With Provided Buffers
([Linux Storage] 6 Hours Ago
Linux 6.18 IO_uring)
- Reference: 0001571565
- News link: https://www.phoronix.com/news/io-uring-multishot-provided-buf
- Source link:
Linux IO_uring and block subsystem maintainer Jens Axboe this week queued the patch series for multi-shot support with provided buffers. Thus the feature should go in for Linux 6.18 as another nice enhancement to the wonderful [1]IO_uring kernel innovation.
Ming Lei of Red Hat who led the work on IO_uring multi-shot support with provided buffers [2]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 [3]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.
[1] https://www.phoronix.com/search/IO_uring
[2] https://git.kernel.org/pub/scm/linux/kernel/git/axboe/linux-block.git/commit/?h=for-next&id=1c6d6c8d3313954665bcb86813a3ba54b47dd3b1
[3] https://git.kernel.org/pub/scm/linux/kernel/git/axboe/linux-block.git/log/?h=for-next
Ming Lei of Red Hat who led the work on IO_uring multi-shot support with provided buffers [2]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 [3]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.
[1] https://www.phoronix.com/search/IO_uring
[2] https://git.kernel.org/pub/scm/linux/kernel/git/axboe/linux-block.git/commit/?h=for-next&id=1c6d6c8d3313954665bcb86813a3ba54b47dd3b1
[3] https://git.kernel.org/pub/scm/linux/kernel/git/axboe/linux-block.git/log/?h=for-next
phoronix