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.
The rationale is that often it is desired that directory metadata
be sync'd so changes become visible in the filesystem, in
particular after creating or renaming a file [0]. This is
necessary for some filesystems like ext4. To avoid races, the
call to fsync(2) must be passed the same fd that was used as the
target directory in the original operation (e. g. renamat(),
openat()).
In order for fsync to be effective, the fd must be equipped with
a full set of file operations kernel-side. Opening the directory
with
O_PATH
prevents this and attempts to fsync will fail withEBADF. Thus an open variant
Dir::open_full()
is added thatomits the flag.
[0] https://lwn.net/Articles/457667/ (section: When should you
fsync?)
Signed-off-by: Philipp Gesang [email protected]