{
  "status": "shipping",
  "advantages": [],
  "limitations": [],
  "supersedes": [],
  "supersededBy": [],
  "firstSeen": null,
  "lastSeen": null,
  "updated": "2026-10-21",
  "slug": "f2fs-slack-space-recycling",
  "term": "F2FS slack space recycling",
  "aliases": [
    "F2FS SSR",
    "Slack Space Recycle"
  ],
  "definition": "F2FS slack space recycling allocates eligible free positions within an already used segment instead of requiring a fresh sequential segment.",
  "note": "The Linux allocation-mode declaration expands SSR as Slack Space Recycle. [segment612]\n\nIn the reviewed Linux v6.12/v6.16 path, __next_free_blkoff searches for a zero in the union of current-valid and checkpoint-protection maps. Current invalidity alone is insufficient. [reuse612] [reuse616]\n\nWith checkpointing enabled, allocation can add a protection bit before the next checkpoint; invalidation does not clear it. With checkpointing disabled, the reviewed allocation helper does not add that bit. These rules describe the bitmap guard, not whole-filesystem free capacity or a recommendation to disable checkpoints. [reuse616]\n\nThe FAST 2015 design explains threaded logging as filling holes in used segments, with a cleaning-versus-random-write trade-off. Its historical thresholds and measurements are not current-kernel guarantees. [lee]",
  "related": [
    "f2fs",
    "f2fs-checkpoint",
    "f2fs-segment-information-table",
    "garbage-collection-host"
  ],
  "citations": [
    {
      "id": "reuse612",
      "title": "Linux v6.12 fs/f2fs/segment.c: update_sit_entry, __next_free_blkoff and change_curseg.",
      "url": "https://github.com/torvalds/linux/blob/v6.12/fs/f2fs/segment.c",
      "accessed": "2026-10-21"
    },
    {
      "id": "reuse616",
      "title": "Linux v6.16 fs/f2fs/segment.c: separate allocation/release helpers and SSR free-slot selection.",
      "url": "https://github.com/torvalds/linux/blob/v6.16/fs/f2fs/segment.c",
      "accessed": "2026-10-21"
    },
    {
      "id": "lee",
      "title": "Lee et al. (2015). F2FS: A New File System for Flash Storage, section 2.6.",
      "url": "https://www.usenix.org/system/files/conference/fast15/fast15-paper-lee.pdf",
      "accessed": "2026-10-21"
    },
    {
      "id": "hesela-reuse",
      "title": "Hesela: F2FS invalid does not mean reusable yet; illustrative model and tests.",
      "url": "https://hesela.com/analyses/f2fs-checkpoint-fsync-recovery/#reuse-guard",
      "accessed": "2026-10-21"
    },
    {
      "id": "segment612",
      "title": "Linux v6.12 fs/f2fs/segment.h: SSR allocation mode and Slack Space Recycle.",
      "url": "https://github.com/torvalds/linux/blob/v6.12/fs/f2fs/segment.h",
      "accessed": "2026-10-21"
    }
  ]
}
