Skip to content

docs(engine): pick ENOSPC injection mechanism for spill tests (SPL-33.a)#4770

Merged
oferchen merged 1 commit into
masterfrom
docs/spl-33a-enospc-injection-mechanism
May 23, 2026
Merged

docs(engine): pick ENOSPC injection mechanism for spill tests (SPL-33.a)#4770
oferchen merged 1 commit into
masterfrom
docs/spl-33a-enospc-injection-mechanism

Conversation

@oferchen
Copy link
Copy Markdown
Owner

Summary

  • Design-only doc for SPL-33.a evaluating five candidate ENOSPC injection mechanisms (tmpfs size=N, fallocate filler, mock writer, failpoints crate, fuse-mt) against CI compatibility on the Linux musl / macOS / Windows tiles and against the SPL-32 audit's syscall-site inventory.
  • Recommends a userspace mock writer (FaultingFile + FaultPlan under #[cfg(test)]) for the SPL-33.b unit-test layer, paired with a single Linux-gated fallocate filler integration test for real-kernel coverage. Pins the chosen mechanism's API surface in pseudo-code so SPL-33.b has a concrete implementation target.
  • Cross-references docs/design/spill-fs-error-audit.md (SPL-32, 23 syscall sites: 9 recoverable / 17 bubble-up / 3 silent) and the SpillError::PriorSpillsLost wiring shipped via SPL-35/36/37 (feat(engine): SpillError::PriorSpillsLost typed variant + consumer wiring (SPL-35..37) #4749).

Test plan

  • No source changes; verify git diff --stat shows one new markdown file under docs/design/.
  • Confirm CI runs (fmt+clippy on docs path is a no-op).
  • SPL-33.b consumes the FaultPlan API surface and the seven-row test matrix unchanged.
  • SPL-33.c asserts no-panic degradation against the same matrix.

Evaluate five candidate ENOSPC injection mechanisms (tmpfs size-cap,
fallocate filler, mock writer, failpoints crate, fuse-mt) against CI
compatibility on the Linux musl / macOS / Windows tiles and against
the SPL-32 audit's site inventory. Recommend a userspace mock writer
for the unit-test layer plus a Linux-gated fallocate filler for one
real-kernel integration test, and pin the chosen mechanism's API
surface in pseudo-code so SPL-33.b has a concrete target.

Cross-references docs/design/spill-fs-error-audit.md (SPL-32) for the
syscall site inventory and the SpillError::PriorSpillsLost wiring
landed via SPL-35/36/37 (#4749).
@oferchen oferchen force-pushed the docs/spl-33a-enospc-injection-mechanism branch from cb6baa3 to ae43e39 Compare May 23, 2026 02:15
@github-actions github-actions Bot added the documentation Improvements or additions to documentation label May 23, 2026
@oferchen oferchen merged commit 51e4548 into master May 23, 2026
9 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentation Improvements or additions to documentation

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant