This series of patches makes possible to do direct block IO with integrity payload using io uring kernel interface. Userspace app can utilize new READV_PI/WRITEV_PI operation with a new fields in sqe struct (pi_addr/pi_len) to provide iovec's with integrity data. Changes since v2: - separate code from fast path - keep rw_pi struct size <= 64 byte - using kiocb->private pointer to pass PI data iterator to block direct IO layer - improved bio_integrity_add_iovec function Alexander V. Buev (3): block: bio-integrity: add PI iovec to bio block: io-uring: add READV_PI/WRITEV_PI operations block: fops: handle IOCB_USE_PI in direct IO block/bio-integrity.c | 163 +++++++++ block/fops.c | 80 +++++ include/linux/bio.h | 8 + include/linux/fs.h | 1 + include/uapi/linux/io_uring.h | 6 + include/uapi/linux/uio.h | 3 +- io_uring/Makefile | 3 +- io_uring/io_uring.c | 2 + io_uring/opdef.c | 27 ++ io_uring/rw.h | 4 + io_uring/rw_pi.c | 619 ++++++++++++++++++++++++++++++++++ io_uring/rw_pi.h | 34 ++ 12 files changed, 948 insertions(+), 2 deletions(-) create mode 100644 io_uring/rw_pi.c create mode 100644 io_uring/rw_pi.h -- 2.30.2