{
  "slug": "nvme-write-uncorrectable",
  "term": "NVMe Write Uncorrectable",
  "aliases": [
    "Write Uncorrectable",
    "nvme write-uncor"
  ],
  "definition": "NVMe Write Uncorrectable marks a logical-block range invalid so subsequent reads report an Unrecovered Read Error until a write clears the state.",
  "note": "Invalidation changes the logical read contract; it does not demonstrate damaged flash or physical erasure. Clearing the invalid state with a later write is not recovery of the previous contents. [libnvme-uncorrectable]\n\nThe 16-bit NLB field is zero-based: 0 selects one block and 65535 selects 65536 blocks, subject to namespace bounds and command limits. Under NVM Command Set 1.3, interpret WUSL with NVMWUSV: a nonzero WUSL encodes a hard data-size limit when NVMWUSV=0 and a recommended maximum data size when NVMWUSV=1. Both fields zero means unsupported; WUSL=0 with NVMWUSV=1 instead reports no recommended maximum. [nvm-cs13]\n\nAn induced read error need not increase Media and Data Integrity Errors. Inclusion of Write Uncorrectable errors is optional. The counter alone therefore cannot confirm whether this command changed an LBA. [libnvme-smart]",
  "status": "shipping",
  "advantages": [],
  "limitations": [
    {
      "text": "This state-changing command is unsuitable as a read-only health probe on live data.",
      "citationIds": [
        "libnvme-uncorrectable"
      ]
    }
  ],
  "related": [
    "nvme-write-zeroes",
    "nvme-media-data-integrity-errors",
    "logical-block-address",
    "nvme-dulbe",
    "discard",
    "sanitize-nvme"
  ],
  "supersedes": [],
  "supersededBy": [],
  "firstSeen": null,
  "lastSeen": null,
  "updated": "2026-11-06",
  "citations": [
    {
      "id": "libnvme-uncorrectable",
      "title": "libnvme v1.15: nvme_write_uncorrectable API contract",
      "url": "https://github.com/linux-nvme/libnvme/blob/v1.15/src/nvme/ioctl.h#L4039",
      "accessed": "2026-11-06"
    },
    {
      "id": "nvm-cs13",
      "title": "NVM Command Set 1.3, sections 3.3.7 and 4.1.5.4. Copyright 2008-2026 NVM Express, Inc. All rights reserved.",
      "url": "https://nvmexpress.org/wp-content/uploads/NVM-Express-NVM-Command-Set-Specification-Revision-1.3-Ratified-2026.07.31.pdf",
      "accessed": "2026-11-06"
    },
    {
      "id": "libnvme-smart",
      "title": "libnvme v1.15: nvme_smart_log.media_errors",
      "url": "https://github.com/linux-nvme/libnvme/blob/v1.15/src/nvme/types.h#L3495",
      "accessed": "2026-11-06"
    },
    {
      "id": "hesela-discard",
      "title": "Hesela: command-induced read errors and deallocation",
      "url": "https://hesela.com/analyses/discard-is-not-zeroing/#write-uncorrectable",
      "accessed": "2026-11-06"
    }
  ],
  "provenance": [
    "Source review of NVM Command Set 1.3 and libnvme v1.15, not a device experiment; support rules are revision-scoped. No device command was executed."
  ]
}
