Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

deploy: Don't recompute verity checksums if not enabled #3326

Merged
merged 1 commit into from
Oct 29, 2024

Commits on Oct 28, 2024

  1. deploy: Don't recompute verity checksums if not enabled

    This fixes a truly horrific performance bug when
    composefs is enabled, but fsverity is not supported
    by the filesystem. We'd fall back to doing *userspace*
    checksumming of all files at deployment time which was absolutely
    not expected or required.
    
    There's really an immense amount of technical debt
    here, such as the confusion between `ex-integity.composefs`
    vs the prepare-root config, how we handle "torn" states
    where some objects don't have verity enabled but some do,
    etc.
    
    The ostree composefs state has two modes:
    
    - signed: We need to enforce fsverity
    - unsigned: Best effort resilience
    
    So we fix this by making the deploy path to make verity
    "opportunistic" - if the ioctl gives us the data, then we
    add it to the composefs.
    
    However, this code path is also invoked when we're
    computing the expected composefs digest to inject
    as commit metadata, and *that* API must work regardless
    of whether the target repo has fsverity enabled as
    it may operate on a build server.
    
    One lucky thing in all of this: When I went to add
    the "checkout composefs" API I added a stub `GVariant`
    for options extensibility, which we now use.
    
    Signed-off-by: Colin Walters <walters@verbum.org>
    cgwalters committed Oct 28, 2024
    Configuration menu
    Copy the full SHA
    a6d07b6 View commit details
    Browse the repository at this point in the history