Linux IO_uring 和块子系统维护者 Jens Axboe 本周提交了使用提供的缓冲区进行多次执行支持的补丁系列。因此该功能应该会加入 Linux 6.18 版本,作为对 IO_uring 内核创新的又一个美好增强。
Red Hat 的 Ming Lei 领导了使用提供的缓冲区的 IO_uring 多次执行支持工作,他在补丁系列中解释了:
“添加 UAPI 标志 IORING_URING_CMD_MULTISHOT 以支持使用提供的缓冲区进行 multishot uring_cmd 操作。
这使驱动程序能够从单个 uring_cmd 提交中发出多个完成事件,这对于:
– 通知用户空间设备事件(例如,中断处理)
– 支持具有多个事件源(例如,多队列设备)的设备”
– 避免在事件来自多个源的全设备时需要设备 poll()支持该实现添加了两个新的 API:
– io_uring_cmd_select_buffer(): 从提供的缓冲区组中选择一个缓冲区用于 multishot uring_cmd
– io_uring_mshot_cmd_post_cqe(): 在事件数据被推送到提供的缓冲区后提交一个 CQEMultishot uring_cmd 必须与缓冲区选择(IOSQE_BUFFER_SELECT)一起使用,目前与 IORING_URING_CMD_FIXED 互斥。”
主要收获是这种多射击支持对于更好地支持某些设备(如多队列硬件)和通知用户空间设备事件很有用。这些新 API 的第一个用户是用户空间的块设备”ublk”驱动程序。

这些补丁本周已排队放入 linux-block.git 的”for-next”Git 分支,使其成为预期出现在 Linux 6.18 中的内容,除非在提交给 Linus Torvalds 之前出现最后一刻的代码问题。
转自 IO_uring Ready For uring_cmd Multishot Support With Provided Buffers – Phoronix
Linuxeden开源社区
牛人的现实