[PATCH 0/2] io_uring r/w with metadata

Vincent Fu
2025-07-23T17:05:51Z

These two patches add support for io_uring read and write operations for
block devices with metadata. The first patch adds this support to the
io_uring ioengine and the second patch adds a script for this feature
using NVMe devices.

This code has been tested on the kernel below:
tree: https://git.kernel.org/pub/scm/linux/kernel/git/vfs/vfs.git
branch: vfs-6.17.integrity

with the patch below applied

https://lore.kernel.org/linux-block/20250722120755.87501-1-anuj20.g@samsung.com/

This code has passed testing under the following settings:

QEMU NVMe device 512B data size; 8B, 16B, 64B metadata size; 16b Guard PI
QEMU NVMe device 4K data size; 16B, 64B metadata size, 64b Guard PI

I have not been able to run the following tests due to platform
issues:

QEMU NVMe device 4K data size; any metadata size; 16b Guard PI
nvme format fails
scsi-debug device
module is loaded with dif=1,2,or 3 but PI support is not detected

Would appreciate help anyone can provide for the missing test platforms.

Vincent Fu (2):
engines/io_uring: support r/w with metadata
t/io_uring_pi: test script for io_uring PI

engines/io_uring.c | 241 ++++++++++++++++++++++++--
engines/nvme.c | 35 ++--
engines/nvme.h | 18 ++
io_u.h | 1 +
os/linux/io_uring.h | 15 ++
t/io_uring_pi.py | 408 ++++++++++++++++++++++++++++++++++++++++++++
6 files changed, 681 insertions(+), 37 deletions(-)
create mode 100644 t/io_uring_pi.py

--
2.47.2