Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
fix: recognize kernel mount failure when target already mounted. (pro…
…ject-stacker#539) In a single stacker file that used a squashfs image twice or more, stacker would mount the layers the first time correctly. The image build would fail. The reason was that maybeKernelSquashMount did not detected *why* the mount failed (it was already mounted), but only that it did fail. So the code then attempted to extract the squashfs layer with unsquashfs and an error would occur like: FATAL ERROR: dir_scan: failed to change permissions for directory .../roots/sha256_52068a5d6c1...02caeb3a706cba3a/overlay, because Read-only file system Parallel unsquashfs: Using 32 processors 691 inodes (966 blocks) to write The error only actually occurs if: * user is priveleged (can do a kernel mount) * stacker is building squash images (--layer-type=squashfs) * user does not have squashfuse in their path. This is fixed more correctly upstream in 565b032. An example stacker file that would recreate: b1: build_only: true from: type: docker url: oci:my-ocidir:base:latest-squashfs run: | echo "hello world" > f1 b2: from: type: docker url: oci:my-ocidir:base:latest-squashfs run: | echo "goodbye" > f2 The fix here is not great... effectively grepping the output of 'mount' for 'is already mounted'. We set the LANG environment variable to C to avoid failures due to a translations. Signed-off-by: Scott Moser <[email protected]>
- Loading branch information