actiondfs: simplify cached directories, inode ownership, and backing files - #26
Merged
Conversation
dzbarsky
added a commit
that referenced
this pull request
Aug 1, 2026
Continue merged #26 with 30 separately reviewable actiondfs commits. Prevent unprivileged staged operations from triggering the Linux notify_change BUG on privilege removal; serialize staged writes and copy_file_range, preserve and correctly clear setuid/setgid bits, honor backing mount idmaps, reject malformed protobuf keys, and sanitize forwarded ATTR_OPEN. Simplify staged dentry publication, inode classification and ownership, CAS and staged path references, cached-child allocation, generation locking, and protobuf fixed-width decoding. The actiondfs implementation removes 28 net lines and adds focused VM regressions for non-root privileged-file creation, truncation, copy_file_range, and O_TRUNC. Validation: all 66 supported cross-architecture Bazel build targets and repository tests; standalone timing-parser test; production and instrumented macOS Virtualization.framework VM suites; fresh LLVM VM smoke with 2,017 warmup and 2,106 measured actions; all five GitHub Actions checks passed. Matched 1,998-action CI benchmarks: Linux actiond 304.743s / native 313.029s = 0.974x versus main 1.055x; Windows actiond 348.083s / native 373.566s = 0.932x versus main 1.005x. Both VM timing reports are refreshed.
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.
Continue #25 with 25 separately reviewable actiondfs cleanups. Derive inode and merged-directory state from cached children, use RCU for immutable directory-cache hits, search only cached input directories, borrow backing dentries and staged copy files, transfer root-node ownership to root inodes, reduce each superblock allocation from 128 to 96 bytes, allocate unhashed roots directly, publish staged backing dentries before inode insertion, initialize locks only for loadable inputs, and remove unnecessary ancestor zeroing, repeated inode classification, blob checks, synthetic symlink digests, protobuf copies, cache cleanup branches, and released-file state resets.
Validation: all 66 supported Bazel targets, both repository test suites, the standalone timing-parser test, production and instrumented Virtualization.framework VM end-to-end tests, and two fresh llvm-tblgen VM smoke runs with identical 2,106 remote actions (88.494s and 86.002s; previous run 74.995s). Warmups ranged from 63.992s to 83.160s, indicating host contention; compare matched Linux and Windows CI actiond/native results for performance changes. e2e/LLVM_VM_SMOKE_TIMINGS.md contains the exact counters and both measurements.