io_uring integrity metadata
io_uring integrity metadata is a separately described protection-information buffer attached to a read or write request through SQE attributes.
In Linux v6.14, attr_type_mask selects IORING_RW_ATTR_FLAG_PI and attr_ptr identifies io_uring_attr_pi, whose addr and len describe metadata rather than file-data bytes. Initialize the reserved field to zero. [1] [2] The request path requires O_DIRECT; the block mapping path rejects a missing integrity profile, insufficient metadata or unsupported check flags. Zero check flags do not request guard, reference-tag and application-tag checks automatically. Kernel ABI presence alone does not prove filesystem or device support. [2] [3] [4]
Relations
- related
- io-uring, protection-information, end-to-end-data-protection, direct-io, io-uring-cqe, fsync
Advantages
- Lets participating applications supply integrity metadata alongside ordinary read/write requests.
Limitations
- Does not itself establish persistence, freshness, cryptographic authentication or repair.
- The reviewed Linux v6.14 path does not accept user PI for buffered I/O; metadata format and checks depend on the supported stack.
Citations
- Linux v6.14: io_uring userspace ABI, SQE attributes and io_uring_attr_pi.
- Linux v6.14: io_prep_rw_pi, io_prep_rw and io_rw_init_file in io_uring/rw.c.
- Linux v6.14: bio_integrity_map_iter and explicit integrity-check flags.
- Linux v6.14: direct block-device I/O mapping of user integrity metadata.
- Hesela: io_uring integrity metadata is a separate contract.