Expand description
Multi-file writes, one file at a time.
Two primitives, used by the user-scope skill installer and by the repository landing. A lock serializes writers over one target. A stage writes every intended byte beside its destination and replaces it by rename.
What this guarantees, and what it does not. Each replacement is atomic
on its own; the set is not. A run the process does not finish leaves
whole files and the record the previous run wrote, and running it again
finishes the rest. Recovery after power loss rests on the persistence
order below and on the platform’s fsync semantics, and is claimed no
further.
The persistence order is fixed and the same for every domain. Each scratch file is written and synced, then renamed over its destination, then the destination’s directory synced. The record is replaced last.
Modules§
Functions§
- sync_
dir - Flush a directory entry, so a rename into it survives a crash.
- sync_
parent - Flush the directory holding
path, where it has one.