{
  "slug": "io-shepherding",
  "term": "I/O shepherding",
  "aliases": [],
  "definition": "I/O shepherding centralizes filesystem fault-detection and recovery policies around block requests and responses.",
  "note": "CrookFS, an ext3-based research prototype, selects policies by block type and volume. Policies compose retries, checksums, replicas or repair. [shepherd07]\n\nRecovery can create persistent state: relocating a failed checkpoint write also changes allocation and mapping metadata. Chained transactions commit those changes before releasing the original transaction. [shepherd07]",
  "status": "research",
  "advantages": [],
  "limitations": [
    {
      "text": "Journal space must accommodate chained work; protection of the journal itself needs restricted policies.",
      "citationIds": [
        "shepherd07"
      ]
    }
  ],
  "related": [
    "checksum",
    "intra-disk-redundancy",
    "lost-write"
  ],
  "supersedes": [],
  "supersededBy": [],
  "firstSeen": null,
  "lastSeen": null,
  "updated": "2026-11-09",
  "citations": [
    {
      "id": "shepherd07",
      "title": "Gunawi et al. Improving File System Reliability with I/O Shepherding. SOSP 2007, sections 3-5.",
      "url": "https://research.cs.wisc.edu/adsl/Publications/shepherd-sosp07.pdf",
      "accessed": "2026-11-09"
    },
    {
      "id": "hesela-integrity",
      "title": "Hesela: recovery policies, checkpoint repair and memory boundaries",
      "url": "https://hesela.com/analyses/filesystem-checksum-error-detection/#io-shepherding",
      "accessed": "2026-11-09"
    }
  ],
  "provenance": [
    "Historical Linux 2.6.12 prototype and selected fault-injection workloads; not a feature claim about current ext3 or ext4. [shepherd07]"
  ]
}
