fix(update/swap): fsync before swap rename#148
Merged
Conversation
Sync the staged file after chmod and the parent directory after both renames, so the `atomicReplace` promise survives a power loss between the rename and the kernel flush. New `sync` seams on `fs_compat.File` and `fs_compat.Dir` keep this plumbed through the shim — the Dir wrapper drops to `fsync(2)` because `std.Io.Dir` has no sync vtable. Co-authored-by: Claude-Code <noreply@anthropic.com> Co-authored-by: ruvnet <ruvnet@users.noreply.github.com>
8b85176 to
c28f3f6
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
Add
fsyncfor the staged file and the parent directory around the swap rename insrc/update/swap.zig. The promise of atomicity now matches the implementation: a power loss between rename and kernel flush can no longer leave<target>missing or holding partial content.Related Issue
Notes for Reviewers