fix: keep TrackPath watches after atomic replacement - #112
Open
Boulea7 wants to merge 1 commit into
Open
Conversation
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.
On Linux,
TrackPathcould lose a nested file after an atomic replacement when an ancestor already had an inotify handle. The parent was registered with the file-only optimization flag, so its handle could be skipped. The same path also left the stored mode asNoTrackwhen upgrading an existing watch.This registers the parent as a directory and persists watch-mode upgrades. The regression tests cover both a direct
TrackPathwatch and aNoTrack→TrackPathupgrade, then verify that a normal write after replacement is still reported. This was isolated from vitejs/vite#23227.Validation:
cargo clippy --workspace --all-targets --all-features -- -D warningscargo fmt --all -- --checkAI-assisted tooling was used while implementing and testing this change; I reviewed the code and verification results.
By contributing, I agree to the repository license and Code of Conduct terms described in the pull request template.