actiondfs: simplify inode metadata, digest caching, and lookups - #25
Merged
Conversation
dzbarsky
added a commit
that referenced
this pull request
Aug 1, 2026
…files (#26) 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.
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.
Simplify kernel/actiondfs/actiondfs.c in fifteen separately reviewable commits. Borrow immutable cached digests, reduce input inode and blob-cache allocations from kmalloc-192 to kmalloc-96, shrink parsed-child stack storage by 64 bytes, eliminate duplicate cache lookups and blob-path references, replace hexadecimal decoding with character classification, and avoid approximately 1.33 million unstaged-parent lookup calls in the LLVM workload. The actiondfs implementation removes 52 net lines.
Validation: complete supported ARM64/x86_64 Bazel build and test, standalone timing-parser test, production and instrumented macOS Virtualization.framework end-to-end tests, and a fresh LLVM VM smoke with 2,017 warmup plus 2,106 measured actions. The measured build completed in 136.185 seconds; local runs varied with host contention. Matched current-main GitHub Actions baselines are Linux 326.530/328.550 seconds (0.994x actiond/native) and Windows 365.645/376.549 seconds (0.971x), with 1,998 actions each.