{
  "slug": "io-uring-integrity-metadata",
  "term": "io_uring integrity metadata",
  "aliases": [
    "io_uring PI attribute"
  ],
  "definition": "io_uring integrity metadata is a separately described protection-information buffer attached to a read or write request through SQE attributes.",
  "note": "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. [pi-uapi] [pi-rw] 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. [pi-rw] [pi-map] [pi-fops]",
  "status": "shipping",
  "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."
  ],
  "related": [
    "io-uring",
    "protection-information",
    "end-to-end-data-protection",
    "direct-io",
    "io-uring-cqe",
    "fsync"
  ],
  "supersedes": [],
  "supersededBy": [],
  "firstSeen": null,
  "lastSeen": null,
  "updated": "2026-10-15",
  "citations": [
    {
      "id": "pi-uapi",
      "title": "Linux v6.14: io_uring userspace ABI, SQE attributes and io_uring_attr_pi.",
      "url": "https://github.com/torvalds/linux/blob/v6.14/include/uapi/linux/io_uring.h",
      "accessed": "2026-10-15"
    },
    {
      "id": "pi-rw",
      "title": "Linux v6.14: io_prep_rw_pi, io_prep_rw and io_rw_init_file in io_uring/rw.c.",
      "url": "https://github.com/torvalds/linux/blob/v6.14/io_uring/rw.c",
      "accessed": "2026-10-15"
    },
    {
      "id": "pi-map",
      "title": "Linux v6.14: bio_integrity_map_iter and explicit integrity-check flags.",
      "url": "https://github.com/torvalds/linux/blob/v6.14/block/bio-integrity.c",
      "accessed": "2026-10-15"
    },
    {
      "id": "pi-fops",
      "title": "Linux v6.14: direct block-device I/O mapping of user integrity metadata.",
      "url": "https://github.com/torvalds/linux/blob/v6.14/block/fops.c",
      "accessed": "2026-10-15"
    },
    {
      "id": "hesela-uring-pi",
      "title": "Hesela: io_uring integrity metadata is a separate contract.",
      "url": "https://hesela.com/analyses/io-uring-completion-ordering-durability/#integrity-metadata",
      "accessed": "2026-10-15"
    }
  ]
}
