containers / storage

Container Storage Library
Apache License 2.0
539 stars 234 forks source link

composefs: failure to import quay.io/centos-bootc/centos-bootc:stream9 #1941

Closed cgwalters closed 4 weeks ago

cgwalters commented 4 weeks ago

I've enabled composefs + convert_images=True:

podman pull quay.io/centos-bootc/centos-bootc:stream9 (digest `sha256:014fa70c2e7749926d259e8f3b544123bf0582cc96adcfd1fff93be40856b9ae) fails with:

Writing manifest to image destination
mkcomposefs: Parent directory missing for /usr/lib/firmware/cirrus/cs35l41-dsp1-spk-prot-103c8b8f-r1.bin.xz
Error: committing the finished image: failed to put layer using a partial pull: failed to convert json to erofs: exit status 1

I didn't try to debug this yet.


podman info


host: arch: amd64 buildahVersion: 1.35.4 cgroupControllers:

  • cpuset
  • cpu
  • io
  • memory
  • hugetlb
  • pids
  • rdma
  • misc cgroupManager: systemd cgroupVersion: v2 conmon: package: conmon-2.1.10-1.fc40.x86_64 path: /usr/bin/conmon version: 'conmon version 2.1.10, commit: ' cpuUtilization: idlePercent: 97.27 systemPercent: 0.69 userPercent: 2.04 cpus: 32 databaseBackend: sqlite distribution: distribution: fedora variant: silverblue version: "40" eventLogger: journald freeLocks: 2048 hostname: xenon idMappings: gidmap: null uidmap: null kernel: 6.8.9-300.fc40.x86_64 linkmode: dynamic logDriver: journald memFree: 13370695680 memTotal: 67186913280 networkBackend: netavark networkBackendInfo: backend: netavark dns: package: aardvark-dns-1.10.0-1.fc40.x86_64 path: /usr/libexec/podman/aardvark-dns version: aardvark-dns 1.10.0 package: netavark-1.10.3-3.fc40.x86_64 path: /usr/libexec/podman/netavark version: netavark 1.10.3 ociRuntime: name: crun package: crun-1.15-1.fc40.x86_64 path: /usr/bin/crun version: |- crun version 1.15 commit: e6eacaf4034e84185fd8780ac9262bbf57082278 rundir: /run/crun spec: 1.0.0 +SYSTEMD +SELINUX +APPARMOR +CAP +SECCOMP +EBPF +CRIU +LIBKRUN +WASM:wasmedge +YAJL os: linux pasta: executable: /usr/bin/pasta package: passt-0^20240510.g7288448-1.fc40.x86_64 version: | pasta 0^20240510.g7288448-1.fc40.x86_64 Copyright Red Hat GNU General Public License, version 2 or later https://www.gnu.org/licenses/old-licenses/gpl-2.0.html This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. remoteSocket: exists: false path: /run/podman/podman.sock security: apparmorEnabled: false capabilities: CAP_CHOWN,CAP_DAC_OVERRIDE,CAP_FOWNER,CAP_FSETID,CAP_KILL,CAP_NET_BIND_SERVICE,CAP_SETFCAP,CAP_SETGID,CAP_SETPCAP,CAP_SETUID,CAP_SYS_CHROOT rootless: false seccompEnabled: true seccompProfilePath: /usr/share/containers/seccomp.json selinuxEnabled: true serviceIsRemote: false slirp4netns: executable: /usr/bin/slirp4netns package: slirp4netns-1.2.2-2.fc40.x86_64 version: |- slirp4netns version 1.2.2 commit: 0ee2d87523e906518d34a6b423271e4826f71faf libslirp: 4.7.0 SLIRP_CONFIG_VERSION_MAX: 4 libseccomp: 2.5.3 swapFree: 254410752 swapTotal: 8589930496 uptime: 339h 18m 31.00s (Approximately 14.12 days) variant: "" plugins: authorization: null log:
  • k8s-file
  • none
  • passthrough
  • journald network:
  • bridge
  • macvlan
  • ipvlan volume:
  • local registries: {} store: configFile: /etc/containers/storage.conf containerStore: number: 0 paused: 0 running: 0 stopped: 0 graphDriverName: overlay graphOptions: overlay.mountopt: nodev,metacopy=on overlay.use_composefs: "true" graphRoot: /var/lib/containers/storage graphRootAllocated: 1998705090560 graphRootUsed: 1535468904448 graphStatus: Backing Filesystem: btrfs Native Overlay Diff: "false" Supports d_type: "true" Supports shifting: "true" Supports volatile: "true" Using metacopy: "true" imageCopyTmpDir: /var/tmp imageStore: number: 1 runRoot: /run/containers/storage transientStore: false volumePath: /var/lib/containers/storage/volumes version: APIVersion: 5.0.3 Built: 1715299200 BuiltTime: Thu May 9 20:00:00 2024 GitCommit: "" GoVersion: go1.22.2 Os: linux OsArch: linux/amd64 Version: 5.0.3

rhatdan commented 4 weeks ago

@giuseppe PTAL

vrothberg commented 4 weeks ago

Curious. Doesn't fail on my end. @cgwalters can you reproduce or was it a seemingly random error?

rhatdan commented 4 weeks ago
# podman pull quay.io/centos-bootc/centos-bootc:stream9
Trying to pull quay.io/centos-bootc/centos-bootc:stream9...
Getting image source signatures
Copying blob 25a73a3d5d47 done  33.3MiB / 33.3MiB (skipped: 0.0b = 0.00%)
...
Writing manifest to image destination
mkcomposefs: Parent directory missing for /usr/lib/firmware/cirrus/cs35l41-dsp1-spk-prot-103c8b8f-r1.bin.xz
Error: committing the finished image: failed to put layer using a partial pull: failed to convert json to erofs: exit status 1

Blew up for me.

rhatdan commented 4 weeks ago
# podman info | grep compos
    overlay.use_composefs: "true"
# podman -v
podman version 5.1.0-dev
rhatdan commented 4 weeks ago

@giuseppe PTAL

giuseppe commented 4 weeks ago

opened a PR:

cgwalters commented 4 weeks ago

Curious. Doesn't fail on my end.

It only happens with composefs enabled. I tried to make that clear with the title and issue description.

vrothberg commented 4 weeks ago

I enabled it but probably missed something in the storage.conf.