Repository navigation
Conversation
Point the composefs crates at the fs-verity helper series from composefs/composefs-rs#447 (not yet released), to run it through the full CI integration suite. See composefs/composefs-rs#442. bootc doesn't call the composefs-rs APIs that change in that series: objects are written by composefs_oci::pull, which now enables fs-verity from a thread with a private file descriptor table, so a child forked by another thread can't make it fail with ETXTBSY. The one change needed here is in ostree-ext, which used the now deprecated enable_verity_with_retry() to enable fs-verity on existing ostree objects. Use enable_verity_raw() instead: verity has to go on the existing inode, and nothing should still have it open for writing. Generated-by: AI
There was a problem hiding this comment.
🟡 Changes recommended
The eight patched crates use a Git fork absent from deny.toml’s allowlist, causing the CI cargo-deny source check to reject them.
1 open issue
What changed in this PR
This intentionally non-mergeable PR tests the unreleased composefs-rs fs-verity helper through bootc’s CI integration suite.
Changes:
- Temporarily pin eight composefs crates to the helper implementation’s Git commit.
- Replace deprecated retry-based fs-verity enabling for existing OSTree objects with the raw API, handling already-enabled objects and adding error context.
| File | Description |
|---|---|
crates/ostree-ext/src/fsverity.rs |
Use raw fs-verity enabling on existing object inodes. |
Cargo.toml |
Add temporary Git patches for eight composefs crates. |
Cargo.lock |
Lock patched crates to the test commit and record the added libc dependency. |
Review effort: Balanced
| # Temporary: test against the fs-verity helper from | ||
| # https://github.com/composefs/composefs-rs/pull/447 (not yet released). | ||
| [patch.crates-io] | ||
| composefs = { git = "https://github.com/jeckersb/composefs-rs", rev = "500b287742bce5b3ccbb6e9a7841034c1980e5fb" } |
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.

Do not merge. This points bootc at an unreleased composefs-rs branch to run it through the full CI integration suite.
What it tests
composefs/composefs-rs#447 makes composefs-rs create objects through an
FsVerityHelper, a thread pool with a private file descriptor table. A child forked by another thread can then never hold a writable fd to a new object, which used to makeFS_IOC_ENABLE_VERITYfail withETXTBSY. It also deprecatesenable_verity_with_retryandenable_verity_maybe_copy.Changes here
Cargo.toml/Cargo.lock: a temporary[patch.crates-io]for all composefs crates, pinned to the PR's head commit onjeckersb/composefs-rs.ostree-ext/src/fsverity.rs: enabling fs-verity on existing ostree objects now usesenable_verity_rawinstead of the deprecated retry. Verity has to go on the existing inode, and nothing should still have it open for writing. If CI hitsFileOpenedForWritehere, we'll revisit.Nothing else in bootc needed to change: it writes objects through
composefs_oci::pull, which picks up the helper automatically.Local testing
cargo fmt --check,cargo test --no-run, the--no-default-featureschecks andcargo doc -D warnings.cargo clippywith the CI config reports one error, intests-integration/src/container.rs(untouched).aboottests fail, and fail the same way onmainin my environment (permission denied).Generated-by: AI
The changes are LLM-generated; I reviewed the diff.