Repository navigation
fix: filter redundant OCI whiteouts before rootfs copy - #3751
Draft
mattteufel-e2b wants to merge 1 commit into
Draft
mattteufel-e2b wants to merge 1 commit into
mattteufel-e2b wants to merge 1 commit into
Conversation
This branch has not been deployed
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.
OCI layers can introduce a directory containing whiteouts for paths absent from every lower layer. OverlayFS can list those names even though lookup hides them, so rootfs rsync exits 24 and aborts the template build. This patch marks the immediate parents of character-device 0:0 whiteouts with an empty
trusted.overlay.originafter extraction, making OverlayFS filter them during directory enumeration.The helper scans only temporary extracted layers used as read-only lower directories, does not follow symlinks, preserves existing origin/opaque metadata, and propagates xattr errors. Rsync errors remain fatal. It adds one directory walk per layer; the full-image component reproduction measured 0.86 seconds for the walk/mark pass.
Validation:
astanin__python-tabulate-76image fails Cloud import twice, including a serial retry. Cloud logs expose only a generic post-extraction error; they do not reveal rsync stderr.The full-image replay uses Linux 6.1.158 with explicitly opted-in legacy mounts. CI separately passes all 12 OCI tests on Linux 6.17 for AMD64 (race detector enabled) and ARM64, using the production mount path without fallback. AMD64 job · ARM64 job. No production mount code was changed. This remains a draft for infra review; no hosted backend was deployed or rebuilt with this patch.
Reproduction inputs, logs and exact scope · Full-image evidence · Kernel mechanism