Repository navigation
Split writeback into kernel cache and write pipeline settings - #10
Merged
Merged
Conversation
thomasjm
force-pushed
the
split-writeback
branch
from
November 14, 2026 12:25
55e5ebc to
8000bea
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.
The FUSE writeback cache makes the kernel keep its own file sizes, so a file grown from outside the mount reads back truncated while its inode is cached, and no FUSE notify can fix that. This splits
writebackinto two settings:--writeback-cache/Tuning::writeback_cache: the kernel cache, now off by default.--write-pipeline/Tuning::write_pipeline: sendTwrites in the background, on by default.Without the cache the pipeline has to keep reads, stats and write order correct itself: it waits for in-flight writes before getattr/read/lookup, keeps overlapping and O_APPEND writes in order, and merges small sequential writes while all slots are busy (4k writes at 2 ms RTT: ~8 MB/s without merging, ~110 MB/s with).
Also fixes two flaky failures in the diod tests: a hang when an unmount found the mount briefly busy, and mounts failing when another test took diod's port first.
Breaking:
Tuning::writebackis replaced by the two fields above.--writebackstill works but is deprecated. New:mount_with_invalidationstakes the invalidation request and reply streams (used by the tests).