{
  "slug": "bad-block-table",
  "term": "Bad block table",
  "aliases": [
    "BBT",
    "NAND bad block table"
  ],
  "definition": "A bad block table records the usability status of NAND eraseblocks so a storage stack can avoid known unusable blocks.",
  "note": "Factory markers and a BBT are distinct metadata. Factory information can be lost during erase; preserve it using the device's documented procedure. [microchip-bbm]\n\nThe Linux v6.16 raw-NAND BBT implementation constructs an in-memory BBT from markers or a configured flash-resident table. Mirrored, versioned copies are optional. Its memory encoding distinguishes good, worn (a state label, not a cause diagnosis), factory-bad and reserved blocks; reserved table storage is not evidence of a physical defect. [linux-bbt]\n\nA status table is neither a complete logical-to-physical translation map nor data recovery for unreadable bytes. This distinction follows from its metadata role, not a hardware experiment.",
  "status": "shipping",
  "advantages": [],
  "limitations": [
    {
      "text": "Marker locations, encodings and persistence policies are device- and stack-specific; the Linux example does not describe every SSD.",
      "citationIds": [
        "linux-bbt",
        "microchip-bbm"
      ]
    }
  ],
  "related": [
    "bad-block-management",
    "nand-erase-block",
    "nand-spare-area",
    "mtd",
    "ftl"
  ],
  "supersedes": [],
  "supersededBy": [],
  "firstSeen": null,
  "lastSeen": null,
  "updated": "2026-11-13",
  "citations": [
    {
      "id": "linux-bbt",
      "title": "Linux v6.16, nand_bbt.c: table scanning, mirrored copies and reserved blocks",
      "url": "https://raw.githubusercontent.com/torvalds/linux/v6.16/drivers/mtd/nand/raw/nand_bbt.c",
      "accessed": "2026-11-13"
    },
    {
      "id": "microchip-bbm",
      "title": "Microchip. Bad Block Management, section 5.1: factory information and erase operations",
      "url": "https://onlinedocs.microchip.com/oxy/GUID-87101AE8-6003-4D1F-B624-895C158CCD3E-en-US-1/GUID-A343A4A8-5126-4AA8-AEC1-09255B0D8A79.html",
      "accessed": "2026-11-13"
    }
  ],
  "provenance": [
    "Source review of Linux v6.16 raw-NAND code and Microchip guidance. No device was erased or tested. Optional mirroring is not asserted to guarantee crash-atomic updates."
  ]
}
