This patch set allows using End-to-End Data Protection in NVMe subsystem with integrity capable host devices as the NVMe namespaces backend. The patch series is based on io-uring kernel interface feature not merged to kernel upstream yet: https://lore.kernel.org/linux-block/20220920144618.1111138-1-a.b...@yadro.com/
The main advantage of this approach is that it allows using the same protection information enabled disks in multiple VMs concurrently. This may be useful in cluster setups. Please let me know what do you think, are this kind of changes appropriate for QEMU upstream, what should be changed, etc. Dmitry Tihov (5): docs/nvme: add new feature summary block: add transfer of protection information hw/nvme: add protection information pass parameter hw/nvme: implement pi pass read/write/wrz commands hw/nvme: extend pi pass capable commands block/file-posix.c | 130 ++++++++++++- block/io_uring.c | 109 ++++++++++- docs/system/devices/nvme.rst | 15 ++ hw/nvme/ctrl.c | 361 ++++++++++++++++++++++++++++++++--- hw/nvme/dif.c | 303 +++++++++++++++++++++++++++++ hw/nvme/dif.h | 18 ++ hw/nvme/ns.c | 59 +++++- hw/nvme/nvme.h | 2 + hw/nvme/trace-events | 6 + include/block/block-common.h | 2 + include/block/raw-aio.h | 3 +- include/qemu/iov.h | 6 + util/iov.c | 24 +++ 13 files changed, 992 insertions(+), 46 deletions(-) -- 2.38.1