{
  "slug": "ext4-auto-da-alloc",
  "term": "Ext4 auto_da_alloc",
  "aliases": [
    "auto_da_alloc"
  ],
  "definition": "Ext4 auto_da_alloc forces delayed block allocation for recognized file-replacement patterns to support ordered-mode crash protection.",
  "note": "The option covers selected replace-via-rename and replace-via-truncate patterns. Its documented protection depends on the next ordered-mode journal commit, not simply on close or rename returning. [ext4-modes]\n\nLinux v6.12 ext4_rename calls ext4_alloc_da_blocks when a destination inode exists and the option is enabled. Renaming to an absent destination does not take that branch. This narrow heuristic cannot replace an application's synchronization and error checks. [rename-code] [fsync-contract]",
  "related": [
    "delayed-allocation",
    "ext4-data-ordered",
    "atomic-rename",
    "fsync",
    "directory-fsync"
  ],
  "citations": [
    {
      "id": "ext4-modes",
      "title": "Linux v6.12: ext4 data modes and auto_da_alloc",
      "url": "https://github.com/torvalds/linux/blob/adc218676eef25575469234709c2d87185ca223a/Documentation/admin-guide/ext4.rst",
      "accessed": "2026-10-21"
    },
    {
      "id": "rename-code",
      "title": "Linux v6.12: ext4_rename delayed-allocation condition",
      "url": "https://github.com/torvalds/linux/blob/adc218676eef25575469234709c2d87185ca223a/fs/ext4/namei.c#L3648-L3655",
      "accessed": "2026-10-21"
    },
    {
      "id": "fsync-contract",
      "title": "Linux man-pages: fsync(2), file data, directory entries and errors",
      "url": "https://man7.org/linux/man-pages/man2/fsync.2.html",
      "accessed": "2026-10-21"
    }
  ],
  "provenance": [
    "Source review scoped to Linux v6.12; not a crash experiment or certification of later kernels."
  ],
  "status": "shipping",
  "advantages": [],
  "limitations": [],
  "supersedes": [],
  "supersededBy": [],
  "firstSeen": null,
  "lastSeen": null,
  "updated": "2026-10-21"
}
