{
  "slug": "btrfs",
  "term": "Btrfs",
  "aliases": [
    "B-tree filesystem"
  ],
  "definition": "Btrfs is a Linux filesystem built around copy-on-write B-trees, with integrated snapshots, checksumming and multi-device storage.",
  "note": "Copy-on-write does not remove the need for recovery: Btrfs uses a separate tree log for eligible fsync updates before a full transaction commit. Checksum coverage and mount-time recovery depend on the features and options in use. [bacik] [tree-log] The subvolume ro property is separate from read-only mounting. [subvolume]",
  "status": "shipping",
  "advantages": [],
  "limitations": [
    {
      "text": "File data marked NODATASUM is outside data-checksum coverage; copy-on-write is not itself an application transaction or independent backup.",
      "citationIds": [
        "mount"
      ]
    }
  ],
  "supersedes": [],
  "supersededBy": [],
  "firstSeen": null,
  "lastSeen": null,
  "updated": "2026-10-15",
  "related": [
    "copy-on-write",
    "snapshot",
    "btrfs-nodatasum",
    "btrfs-tree-log",
    "checksum",
    "btrfs-read-only-subvolume"
  ],
  "citations": [
    {
      "id": "bacik",
      "title": "Josef Bacik (2012). Btrfs: The Swiss Army Knife of Storage. USENIX ;login:, volume 37, number 1, Filesystem Consistency section.",
      "url": "https://www.usenix.org/system/files/login/articles/bacik_0.pdf",
      "accessed": "2026-10-15"
    },
    {
      "id": "tree-log",
      "title": "Linux v6.16: Btrfs tree-log.c, design comment and replay implementation",
      "url": "https://github.com/torvalds/linux/blob/v6.16/fs/btrfs/tree-log.c",
      "accessed": "2026-10-15"
    },
    {
      "id": "mount",
      "title": "Btrfs documentation: btrfs(5), tree logging and rescue mount options",
      "url": "https://btrfs.readthedocs.io/en/latest/btrfs-man5.html",
      "accessed": "2026-10-15"
    },
    {
      "id": "hesela",
      "title": "Hesela: Btrfs tree logs, read-only replay and version boundaries",
      "url": "https://hesela.com/analyses/btrfs-tree-log-read-only-replay/",
      "accessed": "2026-10-15"
    },
    {
      "id": "subvolume",
      "title": "Btrfs documentation: subvolume flags and non-recursive snapshots",
      "url": "https://btrfs.readthedocs.io/en/stable/btrfs-subvolume.html",
      "accessed": "2026-10-15"
    }
  ]
}
