mirror of
https://github.com/xcat2/xcat-dep.git
synced 2026-09-12 04:26:25 +00:00
9bf3f7ad228f686cee06be8f6092b9627ff8a44a
mock mounts /sys/fs/cgroup into every build chroot. On the systemd build hosts every mount carries `shared` propagation, so the chroot cgroup joins the same peer group as the host's own /sys/fs/cgroup. When mock tears a chroot down -- its post-build --scrub, or an aborted build's cleanup -- the cgroup unmount PROPAGATES back through the shared peer group and unmounts the HOST's /sys/fs/cgroup. Every subsequent mock (and even new login sessions) then fails with 'Failed to determine whether the unified cgroups hierarchy is used: No medium found', wedging the whole build host until an operator remounts cgroup2. ppc64le is hit hardest because it leaks corpse chroot mounts on abort, but x86_64 shares the identical shared-cgroup exposure and is one bad abort away from the same failure. Re-exec mockbuild-all.pl inside a private mount namespace made rslave (unshare --mount --propagation slave): the namespace still sees host mounts one-way, but nothing mock mounts or unmounts can propagate out to the host, so a chroot teardown can no longer unmount the host cgroup. The namespace also auto-reaps every mount mock leaks when the process exits, so an aborted build no longer strands corpse mounts under /var/lib/mock. Best-effort and guarded: only re-execs as root with unshare present, and MOCKBUILD_ALL_MOUNTNS prevents a re-exec loop. Signed-off-by: Daniel Hilst <392820+dhilst@users.noreply.github.com>
fix(mockbuild-all): address PR #62 review (build-number, finalize, run-state, skip-build, goconserver, docs)
Description
No description provided
Languages
C
89%
Perl
6.7%
Assembly
1.4%
JavaScript
0.8%
Makefile
0.6%
Other
1.4%