{
  "slug": "nvme-abort",
  "term": "NVMe Abort",
  "aliases": [
    "NVMe Abort command",
    "NVMe command abort"
  ],
  "definition": "NVMe Abort is an administrative command that requests cancellation of an earlier command identified by its submission queue and command identifier.",
  "note": "Base 2.3 distinguishes immediate and deferred abort. After successful Abort completion, DW0 bit 0 is Immediate Abort Not Performed (IANP): zero reports an immediate abort; one means no immediate abort, with later cancellation still possible. Examine the target completion. The immediate-abort boundary forbids target effects after posting the Abort completion except its completion entry; Hesela interprets this as a forward-looking boundary, not rollback. [nvme-abort-23]\n\nIf deferred abort occurs, the target completes with Command Abort Requested. That status alone does not distinguish immediate from deferred abort; retain the Abort result and completion context. [nvme-abort-23]\n\nBase 2.0d instead requires the aborted target's completion before the Abort completion. Do not transfer that ordering to 2.3. Its Abort Command Limit (ACL) counts concurrent Abort commands, not seconds or retries; raw zero encodes one command. [nvme-abort-20d]\n\nLinux v6.12's PCI driver logs the Abort request status, not DW0 or the target status. Consequently, Abort status: 0x0 alone cannot establish target cancellation. The aborting log precedes request allocation and is not proof that an Abort was submitted. This is source inspection, not a hardware experiment. [linux-nvme-abort]",
  "status": "shipping",
  "advantages": [],
  "limitations": [
    {
      "text": "Completion of the Abort request alone does not establish the original operation's outcome.",
      "citationIds": [
        "nvme-abort-23",
        "linux-nvme-abort"
      ]
    }
  ],
  "related": [
    "nvme",
    "io-timeout",
    "retry-deduplication"
  ],
  "supersedes": [],
  "supersededBy": [],
  "firstSeen": null,
  "lastSeen": null,
  "citations": [
    {
      "id": "nvme-abort-23",
      "title": "NVM Express Base 2.3 (2025): section 5.2.1, Abort; Figures 146-148.",
      "url": "https://nvmexpress.org/wp-content/uploads/NVM-Express-Base-Specification-Revision-2.3-2025.08.01-Ratified.pdf",
      "accessed": "2026-11-07"
    },
    {
      "id": "nvme-abort-20d",
      "title": "NVM Express Base 2.0d (2024): section 5.1 and Figure 276, Abort and ACL.",
      "url": "https://nvmexpress.org/wp-content/uploads/NVM-Express-Base-Specification-2.0d-2024.01.11-Ratified.pdf",
      "accessed": "2026-11-07"
    },
    {
      "id": "linux-nvme-abort",
      "title": "Linux v6.12: PCI NVMe abort_endio() and nvme_timeout().",
      "url": "https://raw.githubusercontent.com/torvalds/linux/v6.12/drivers/nvme/host/pci.c",
      "accessed": "2026-11-07"
    }
  ],
  "updated": "2026-11-07"
}
