{
  "slug": "delayed-allocation",
  "term": "Delayed allocation",
  "aliases": [
    "delalloc"
  ],
  "definition": "A filesystem allocation strategy that defers choosing physical storage locations for data already accepted into its buffered write path.",
  "note": "Linux FIEMAP marks such extents DELALLOC and UNKNOWN; UNKNOWN alone does not identify delayed allocation. An unwritten extent already has allocation. Deferred placement does not by itself establish whether accounting space was reserved, nor prove persistence. Linux v6.8 ext4_file_getattr includes reserved delayed-allocation blocks in the reported block count. In Hesela's same-host observation, this count stayed unchanged while synchronization removed DELALLOC from the returned mapping.",
  "status": "shipping",
  "advantages": [],
  "limitations": [],
  "related": [
    "file-extent",
    "unwritten-extent",
    "file-preallocation",
    "buffered-io",
    "writeback-error",
    "fsync",
    "fiemap"
  ],
  "supersedes": [],
  "supersededBy": [],
  "firstSeen": null,
  "lastSeen": null,
  "updated": "2026-10-16",
  "citations": [
    {
      "id": "fiemap",
      "title": "Linux 6.12: FIEMAP extent states and mapping flags",
      "url": "https://docs.kernel.org/6.12/filesystems/fiemap.html",
      "accessed": "2026-10-16"
    },
    {
      "id": "hesela-allocation",
      "title": "Sparse files, preallocation and thin-pool capacity",
      "url": "https://hesela.com/analyses/sparse-files-preallocation-thin-capacity/",
      "accessed": "2026-10-16"
    },
    {
      "id": "ext4-getattr",
      "title": "Linux v6.8 source: ext4_file_getattr includes delayed-allocation reservations",
      "url": "https://github.com/torvalds/linux/blob/v6.8/fs/ext4/inode.c#L5215-L5244",
      "accessed": "2026-10-16"
    },
    {
      "id": "hesela-observer-data",
      "title": "Hesela: nine-file FIEMAP observation with code and environment",
      "url": "https://hesela.dev/research/fiemap-observer.json",
      "accessed": "2026-10-16"
    }
  ]
}
