{
  "slug": "io-uring",
  "term": "io_uring",
  "aliases": [
    "Linux io_uring"
  ],
  "definition": "io_uring is a Linux asynchronous I/O interface that exchanges requests and completion results through shared submission and completion rings.",
  "note": "Batching can reduce per-request submission overhead; it does not establish persistence. The completion result belongs to the specific operation, not to the ring as a whole. For file updates, identify the write set and its synchronization protocol. [overview]",
  "status": "shipping",
  "advantages": [
    "Supports batched asynchronous operations without requiring every request to use a separate synchronous syscall."
  ],
  "limitations": [
    "Availability and behavior depend on the operation, kernel and filesystem."
  ],
  "related": [
    "io-uring-cqe",
    "io-uring-linked-requests",
    "io-uring-drain",
    "fsync",
    "queue-depth"
  ],
  "supersedes": [],
  "supersededBy": [],
  "firstSeen": null,
  "lastSeen": null,
  "updated": "2026-10-14",
  "citations": [
    {
      "id": "overview",
      "title": "liburing: io_uring(7), result reporting and shared rings.",
      "url": "https://man7.org/linux/man-pages/man7/io_uring.7.html",
      "accessed": "2026-10-14"
    },
    {
      "id": "hesela-uring",
      "title": "io_uring: completion is not a durable commit",
      "url": "https://hesela.com/analyses/io-uring-completion-ordering-durability/",
      "accessed": "2026-10-14"
    }
  ]
}
