{
  "slug": "cache-barrier",
  "term": "Storage cache barrier",
  "aliases": [
    "cache barrier",
    "barrier write"
  ],
  "definition": "A storage cache barrier constrains persistence order across groups of writes without itself requiring those writes to be durable when it returns.",
  "note": "BarrierFS combines device support with host scheduling and dispatch changes; fbarrier() separates ordered recovery from durable completion. Its barrier flag closes an epoch, while writes inside that epoch may be reordered. Treat these as research-stack interfaces, not portable replacements for fsync(). [barrier-fast18]\n\nLinux REQ_PREFLUSH instead persists previously completed writes before the accompanying I/O; REQ_FUA makes its own write persistent before completion. [linux-cache]\n\nHesela's four-record illustration enumerates possible states, not crash probabilities. Across epochs [A,B] then [C,D], durable D implies A and B, but need not imply C. The model excludes torn writes, overwrites and media faults. [hesela-barrier]",
  "status": "research",
  "advantages": [
    {
      "text": "Separating order from completion permits deferred persistence between durability boundaries.",
      "citationIds": [
        "barrier-fast18"
      ]
    }
  ],
  "limitations": [
    {
      "text": "An ordering guarantee alone cannot justify a durable acknowledgement.",
      "citationIds": [
        "barrier-fast18"
      ]
    },
    {
      "text": "Do not infer support from a generic SSD label or substitute the research API into an unchanged stack.",
      "citationIds": [
        "barrier-fast18"
      ]
    }
  ],
  "supersedes": [],
  "supersededBy": [],
  "firstSeen": null,
  "lastSeen": null,
  "updated": "2026-11-13",
  "related": [
    "persistence-ordering",
    "cache-flush"
  ],
  "citations": [
    {
      "id": "barrier-fast18",
      "title": "Youjip Won et al. Barrier-Enabled IO Stack for Flash Storage. FAST 2018, pp. 211-226; sections 3.2, 3.4 and 4.1-4.3.",
      "url": "https://www.usenix.org/system/files/conference/fast18/fast18-won.pdf",
      "accessed": "2026-11-13"
    },
    {
      "id": "linux-cache",
      "title": "Linux kernel documentation: Explicit volatile write back cache control.",
      "url": "https://docs.kernel.org/block/writeback_cache_control.html",
      "accessed": "2026-11-13"
    },
    {
      "id": "hesela-barrier",
      "title": "Hesela: cache-barrier epochs and durable completion, with a constructed enumeration.",
      "url": "https://hesela.com/analyses/nfs-stable-writes-flush-fua/#cache-barrier",
      "accessed": "2026-11-13"
    }
  ],
  "provenance": [
    "Source synthesis; no hardware experiment or performance replication. Section 3.2 has an apparent before/after wording reversal; the interpretation follows sections 3.4 and 4.1-4.3, not that isolated sentence. No author-issued erratum is claimed."
  ]
}
