Skip to content

Latest commit

 

History

History
21 lines (15 loc) · 2.66 KB

WriteThroughJournal.md

File metadata and controls

21 lines (15 loc) · 2.66 KB

write-through journal admission

StorageRecovery, proposed ADR-135, ADR-003, ADR-046, ADR-116.

REQ-EXECUTION-JOURNAL-001: Preserve original WriteThrough open semantics in addition to existing no-follow, nonblocking, regular-handle/path identity and flock ownership. Preserve existing share/buffer/Name and original write/flush/replay ordering. Correct the confirmed KeyLoad ARM64 no-follow ABI mapping (0x8000 versus x64 0x20000), preserving every other selected default flag. existing opening never creates/truncates; only initial missing inspection in normal OpenOrCreate permits original exclusive BCL WriteThrough creation. No retry/follow fallback.

AC-EXECUTION-JOURNAL-001: Read actual file status flags, compare full O_SYNC with same-OS original BCL WriteThrough handle, require nonblocking bit and actual Linux architecture-selected no-follow bit, plus original absolute journal Name. A held journal excludes an independent exclusive open with the actual Win32-wrapped EWOULDBLOCK code (Linux11/mac35); unexpected returned owners close separately so disposal cannot masquerade as the original open refusal. Execute real canonical healthy Commit, full independent literal rows/identity/position and two same-root cold opens with matching original flags each time. No measured durability or speed claim.

AC-EXECUTION-JOURNAL-002: Separate genuine symlink/FIFO/missing-original journal fixtures invoke ONLY the actual bounded existing-store-inspect Release RecoveryProcess with original outer owner/readers. Require fixed FormatUnsupported for invalid type, original FileNotFound with no creation for missing guarded input. Every original file byte is conserved because rejection occurs before tree open; the hidden original journal is read instead of the FIFO/link. Restore only the owned entry after actual child settlement, then execute the same healthy continuation/two cold cuts. Unknown child settlement prevents restoration/reuse/root deletion. All original error/cleanup objects remain in ordered ledgers.

flowchart LR
 Root[Owned original root] --> Invalid[Invalid journal entry]
 Invalid --> Child[Actual guarded child refusal and original joins]
 Child --> Preserve[Full original files retained]
 Preserve --> Repair[Restore owned original journal]
 Repair --> Healthy[Real O_SYNC Commit and full cut]
 Healthy --> Cold[Two cold complete cuts]
Loading

Execution/Linux ABI, filesystem, recovery, replicated-cluster and coverage qualification are separate gates.