{
  "slug": "crash-consistent-filesystem-repair",
  "term": "Crash-consistent filesystem repair",
  "aliases": [
    "Crash-safe filesystem repair"
  ],
  "definition": "Crash-consistent filesystem repair preserves a recoverable repair state when a failure interrupts the checker's own metadata updates.",
  "note": "The repair path has its own persistence obligations. FAST 2018's rfsck-lib records repair updates in a redo log, makes them durable, then applies them to the image. Ordered safe transactions allow completed groups to be replayed after interruption. [rfsck18]\n\nAn undo file is a different promise. The e2fsprogs v1.47.3 e2fsck manual explicitly excludes recovery from power or system crashes using its -z undo file. The presence of saved old blocks therefore does not establish crash-safe repair. [e2fsck1473]\n\nRecovery also requires the correct target. e2undo normally refuses a log whose saved superblock does not match the target filesystem. Its -n mode performs a dry run; -f disables the identity safeguard. Neither option adds a durability guarantee. [e2undo1473]",
  "status": "research",
  "advantages": [
    {
      "text": "A repair protocol can retain completed work across interruptions instead of restarting every check.",
      "citationIds": [
        "rfsck18"
      ]
    }
  ],
  "limitations": [
    {
      "text": "The rfsck prototype was evaluated under a clean power-fault model and limited test images, not all possible corruptions.",
      "citationIds": [
        "rfsck18"
      ]
    },
    {
      "text": "A repair log does not by itself prove that repaired contents are the application's intended data.",
      "citationIds": [
        "rfsck18"
      ]
    }
  ],
  "related": [
    "filesystem-consistency-invariant",
    "write-ahead-log",
    "crash-consistency"
  ],
  "supersedes": [],
  "supersededBy": [],
  "firstSeen": null,
  "lastSeen": null,
  "citations": [
    {
      "id": "rfsck18",
      "title": "Gatla et al. Towards Robust File System Checkers. FAST 2018, pp. 105-122; sections 3-7.",
      "url": "https://www.usenix.org/system/files/conference/fast18/fast18-gatla.pdf",
      "accessed": "2026-11-12"
    },
    {
      "id": "e2fsck1473",
      "title": "e2fsprogs v1.47.3: e2fsck(8), mounted filesystems and -z undo_file.",
      "url": "https://raw.githubusercontent.com/tytso/e2fsprogs/v1.47.3/e2fsck/e2fsck.8.in",
      "accessed": "2026-11-12"
    },
    {
      "id": "e2undo1473",
      "title": "e2fsprogs v1.47.3: e2undo(8), matching the log to the filesystem and dry-run mode.",
      "url": "https://raw.githubusercontent.com/tytso/e2fsprogs/v1.47.3/misc/e2undo.8.in",
      "accessed": "2026-11-12"
    }
  ],
  "updated": "2026-11-12",
  "provenance": [
    "Source synthesis; no new device measurement or reproduction of the checker experiments.",
    "FAST 2018 sections 3.2, 5.3 and 7; version-pinned upstream e2fsprogs manuals."
  ]
}
