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

executor: fix overlay layer limit for non-rootfs mounts #4815

Merged
merged 1 commit into from
Apr 1, 2024

Commits on Apr 1, 2024

  1. executor: fix overlay layer limit for non-rootfs mounts

    Historic layer limit for Docker images is 127. Because in
    overlayfs mounting 127 layers usually reaches the page size
    limit of mount options in Linux kernel, there is special code
    to work around the limitation.
    
    This custom code was used for rootfs of container because
    runc takes rootfs as a directory path, meaning buildkit needs
    to mount it and then pass the path. For non-rootfs mounts
    runc takes them as direct mount configuration and performs
    the mount itself. As runc does not have this special way to
    mount long overlayfs mounts it will perform the mount with clipped
    options what will fail in some way in kernel depending on the
    precise cutoff point.
    
    Workaround is to detect when the mount passed to runc is too
    long for runc to mount it itself and it that case let
    BuildKit mount it and in runc perform bind of the BuildKit mount.
    
    Signed-off-by: Tonis Tiigi <[email protected]>
    tonistiigi committed Apr 1, 2024
    Configuration menu
    Copy the full SHA
    2c9d934 View commit details
    Browse the repository at this point in the history