* [PATCH 0/3] umount fixes and cleanups @ 2018-12-05 9:29 Jan Kiszka 2018-12-05 9:29 ` [PATCH 1/3] ci: Wait for bitbake worker to finish before deleting artifacts Jan Kiszka ` (4 more replies) 0 siblings, 5 replies; 18+ messages in thread From: Jan Kiszka @ 2018-12-05 9:29 UTC (permalink / raw) To: isar-users; +Cc: Cedric Hombourger Patches related to resolving the pending CI issues as well as simplifying the umounts used during cleanup. Jan Jan Kiszka (3): ci: Wait for bitbake worker to finish before deleting artifacts isar-events: Improve umount handler Remove redundant recursive umounts meta/classes/isar-events.bbclass | 38 ++++++++-------------- meta/classes/isar-image.bbclass | 4 +-- .../recipes-core/isar-bootstrap/isar-bootstrap.inc | 4 +-- scripts/ci_build.sh | 1 + 4 files changed, 18 insertions(+), 29 deletions(-) -- 2.16.4 ^ permalink raw reply [flat|nested] 18+ messages in thread
* [PATCH 1/3] ci: Wait for bitbake worker to finish before deleting artifacts 2018-12-05 9:29 [PATCH 0/3] umount fixes and cleanups Jan Kiszka @ 2018-12-05 9:29 ` Jan Kiszka 2018-12-05 9:52 ` Hombourger, Cedric 2018-12-05 9:59 ` Maxim Yu. Osipov 2018-12-05 9:29 ` [PATCH 2/3] isar-events: Improve umount handler Jan Kiszka ` (3 subsequent siblings) 4 siblings, 2 replies; 18+ messages in thread From: Jan Kiszka @ 2018-12-05 9:29 UTC (permalink / raw) To: isar-users; +Cc: Cedric Hombourger From: Jan Kiszka <jan.kiszka@siemens.com> bitbake completes asynchronously to the worker daemon. Therefore, we must not start deleting its tmp folder before the termination because it may contain active mounts. Wait for the socket that links frontend and backend to go away. This is a reliably sign that the worker finished as well. Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com> --- scripts/ci_build.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/scripts/ci_build.sh b/scripts/ci_build.sh index 20b77b7..aae9084 100755 --- a/scripts/ci_build.sh +++ b/scripts/ci_build.sh @@ -92,6 +92,7 @@ if [ -n "$FAST_BUILD" ]; then multiconfig:qemuarm-stretch:isar-image-base \ multiconfig:qemuarm64-stretch:isar-image-base \ multiconfig:qemuamd64-stretch:isar-image-base + while [ -e bitbake.sock ]; do sleep 1; done sudo rm -rf tmp sed -i -e 's/#ISAR_USE_CACHED_BASE_REPO ?= "1"/ISAR_USE_CACHED_BASE_REPO ?= "1"/g' conf/local.conf bitbake $BB_ARGS \ -- 2.16.4 ^ permalink raw reply [flat|nested] 18+ messages in thread
* RE: [PATCH 1/3] ci: Wait for bitbake worker to finish before deleting artifacts 2018-12-05 9:29 ` [PATCH 1/3] ci: Wait for bitbake worker to finish before deleting artifacts Jan Kiszka @ 2018-12-05 9:52 ` Hombourger, Cedric 2018-12-05 9:59 ` Maxim Yu. Osipov 1 sibling, 0 replies; 18+ messages in thread From: Hombourger, Cedric @ 2018-12-05 9:52 UTC (permalink / raw) To: Jan Kiszka, isar-users s/reliably/reliable/ Looks good otherwise -----Original Message----- From: Jan Kiszka [mailto:jan.kiszka@siemens.com] Sent: Wednesday, December 5, 2018 12:30 PM To: isar-users <isar-users@googlegroups.com> Cc: Hombourger, Cedric <Cedric_Hombourger@mentor.com> Subject: [PATCH 1/3] ci: Wait for bitbake worker to finish before deleting artifacts From: Jan Kiszka <jan.kiszka@siemens.com> bitbake completes asynchronously to the worker daemon. Therefore, we must not start deleting its tmp folder before the termination because it may contain active mounts. Wait for the socket that links frontend and backend to go away. This is a reliably sign that the worker finished as well. Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com> --- scripts/ci_build.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/scripts/ci_build.sh b/scripts/ci_build.sh index 20b77b7..aae9084 100755 --- a/scripts/ci_build.sh +++ b/scripts/ci_build.sh @@ -92,6 +92,7 @@ if [ -n "$FAST_BUILD" ]; then multiconfig:qemuarm-stretch:isar-image-base \ multiconfig:qemuarm64-stretch:isar-image-base \ multiconfig:qemuamd64-stretch:isar-image-base + while [ -e bitbake.sock ]; do sleep 1; done sudo rm -rf tmp sed -i -e 's/#ISAR_USE_CACHED_BASE_REPO ?= "1"/ISAR_USE_CACHED_BASE_REPO ?= "1"/g' conf/local.conf bitbake $BB_ARGS \ -- 2.16.4 ^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [PATCH 1/3] ci: Wait for bitbake worker to finish before deleting artifacts 2018-12-05 9:29 ` [PATCH 1/3] ci: Wait for bitbake worker to finish before deleting artifacts Jan Kiszka 2018-12-05 9:52 ` Hombourger, Cedric @ 2018-12-05 9:59 ` Maxim Yu. Osipov 2018-12-05 10:04 ` Jan Kiszka 1 sibling, 1 reply; 18+ messages in thread From: Maxim Yu. Osipov @ 2018-12-05 9:59 UTC (permalink / raw) To: Jan Kiszka, isar-users; +Cc: Cedric Hombourger On 12/5/18 12:29 PM, Jan Kiszka wrote: > From: Jan Kiszka <jan.kiszka@siemens.com> > > bitbake completes asynchronously to the worker daemon. Therefore, we > must not start deleting its tmp folder before the termination because it > may contain active mounts. > > Wait for the socket that links frontend and backend to go away. This is > a reliably sign that the worker finished as well. > > Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com> > --- > scripts/ci_build.sh | 1 + > 1 file changed, 1 insertion(+) > > diff --git a/scripts/ci_build.sh b/scripts/ci_build.sh > index 20b77b7..aae9084 100755 > --- a/scripts/ci_build.sh > +++ b/scripts/ci_build.sh > @@ -92,6 +92,7 @@ if [ -n "$FAST_BUILD" ]; then > multiconfig:qemuarm-stretch:isar-image-base \ > multiconfig:qemuarm64-stretch:isar-image-base \ > multiconfig:qemuamd64-stretch:isar-image-base > + while [ -e bitbake.sock ]; do sleep 1; done I'm OK with this change, but this doesn't solve problems with hangs - when commands are launched by hand: Command 1) bitbake -c cache_base_repo multiconfig:qemuarm-stretch:isar-image-base multiconfig:qemuarm64-stretch:isar-image-base multiconfig:qemuamd64- stretch:isar-image-base At this step I've doublechecked that bitbake.sock is cleaned. Command 2) sudo rm -rf tmp Command 3) sed -i -e 's/#ISAR_USE_CACHED_BASE_REPO ?= "1"/ISAR_USE_CACHED_BASE_REPO ?= "1"/g' conf/local.conf No problems detected at this point - the same mounts etc. The next command hangs on the last task (according strace bitbake tries to unmount /sys /dev) Command 4) bitbake multiconfig:qemuarm-stretch:isar-image-base multiconfig:qemuarm64-stretch:isar-image-base multiconfig:qemuamd64-stretch:isar-image-base Maxim. > sudo rm -rf tmp > sed -i -e 's/#ISAR_USE_CACHED_BASE_REPO ?= "1"/ISAR_USE_CACHED_BASE_REPO ?= "1"/g' conf/local.conf > bitbake $BB_ARGS \ > -- Maxim Osipov ilbers GmbH Maria-Merian-Str. 8 85521 Ottobrunn Germany +49 (151) 6517 6917 mosipov@ilbers.de http://ilbers.de/ Commercial register Munich, HRB 214197 General Manager: Baurzhan Ismagulov ^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [PATCH 1/3] ci: Wait for bitbake worker to finish before deleting artifacts 2018-12-05 9:59 ` Maxim Yu. Osipov @ 2018-12-05 10:04 ` Jan Kiszka 0 siblings, 0 replies; 18+ messages in thread From: Jan Kiszka @ 2018-12-05 10:04 UTC (permalink / raw) To: Maxim Yu. Osipov, isar-users; +Cc: Cedric Hombourger On 05.12.18 10:59, Maxim Yu. Osipov wrote: > On 12/5/18 12:29 PM, Jan Kiszka wrote: >> From: Jan Kiszka <jan.kiszka@siemens.com> >> >> bitbake completes asynchronously to the worker daemon. Therefore, we >> must not start deleting its tmp folder before the termination because it >> may contain active mounts. >> >> Wait for the socket that links frontend and backend to go away. This is >> a reliably sign that the worker finished as well. >> >> Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com> >> --- >> scripts/ci_build.sh | 1 + >> 1 file changed, 1 insertion(+) >> >> diff --git a/scripts/ci_build.sh b/scripts/ci_build.sh >> index 20b77b7..aae9084 100755 >> --- a/scripts/ci_build.sh >> +++ b/scripts/ci_build.sh >> @@ -92,6 +92,7 @@ if [ -n "$FAST_BUILD" ]; then >> multiconfig:qemuarm-stretch:isar-image-base \ >> multiconfig:qemuarm64-stretch:isar-image-base \ >> multiconfig:qemuamd64-stretch:isar-image-base >> + while [ -e bitbake.sock ]; do sleep 1; done > > I'm OK with this change, but this doesn't solve problems > with hangs - when commands are launched by hand: > > Command 1) > bitbake -c cache_base_repo multiconfig:qemuarm-stretch:isar-image-base > multiconfig:qemuarm64-stretch:isar-image-base multiconfig:qemuamd64- > stretch:isar-image-base > > At this step I've doublechecked that bitbake.sock is cleaned. > Command 2) > sudo rm -rf tmp > > Command 3) > sed -i -e 's/#ISAR_USE_CACHED_BASE_REPO ?= "1"/ISAR_USE_CACHED_BASE_REPO ?= > "1"/g' conf/local.conf > > No problems detected at this point - the same mounts etc. > > The next command hangs on the last task (according strace bitbake tries to > unmount /sys /dev) Again: What is the pstree of that? Where does the hang come from, what parameters were passed etc.? What is holding the mount point? We really need to understand the problem, not just paper over it. Jan > > Command 4) > bitbake multiconfig:qemuarm-stretch:isar-image-base > multiconfig:qemuarm64-stretch:isar-image-base > multiconfig:qemuamd64-stretch:isar-image-base > > Maxim. > >> sudo rm -rf tmp >> sed -i -e 's/#ISAR_USE_CACHED_BASE_REPO ?= "1"/ISAR_USE_CACHED_BASE_REPO >> ?= "1"/g' conf/local.conf >> bitbake $BB_ARGS \ >> > > -- Siemens AG, Corporate Technology, CT RDA IOT SES-DE Corporate Competence Center Embedded Linux ^ permalink raw reply [flat|nested] 18+ messages in thread
* [PATCH 2/3] isar-events: Improve umount handler 2018-12-05 9:29 [PATCH 0/3] umount fixes and cleanups Jan Kiszka 2018-12-05 9:29 ` [PATCH 1/3] ci: Wait for bitbake worker to finish before deleting artifacts Jan Kiszka @ 2018-12-05 9:29 ` Jan Kiszka 2018-12-05 9:29 ` [PATCH 3/3] Remove redundant recursive umounts Jan Kiszka ` (2 subsequent siblings) 4 siblings, 0 replies; 18+ messages in thread From: Jan Kiszka @ 2018-12-05 9:29 UTC (permalink / raw) To: isar-users; +Cc: Cedric Hombourger From: Jan Kiszka <jan.kiszka@siemens.com> Using lazy umount avoids having to loop over the mount points. Furthermore, also triggering on runQueueExitWait allows to perform the umount earlier. Finally, filter for the events we actually want. Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com> --- meta/classes/isar-events.bbclass | 38 +++++++++++++------------------------- 1 file changed, 13 insertions(+), 25 deletions(-) diff --git a/meta/classes/isar-events.bbclass b/meta/classes/isar-events.bbclass index b3ce434..05b27e5 100644 --- a/meta/classes/isar-events.bbclass +++ b/meta/classes/isar-events.bbclass @@ -6,34 +6,22 @@ addhandler isar_handler -python isar_handler () { +python isar_handler() { import subprocess - import time + import bb.runqueue - def umount_all(basepath): - # '/proc/mounts' contains all the active mounts, so knowing basepath - # we can get the list of mounts for the specific multiconfig and - # clean them. - result = True + tmpdir = d.getVar('TMPDIR', True) + if not tmpdir: + return + + basepath = tmpdir + '/work/' + + with open(os.devnull, 'w') as devnull: with open('/proc/mounts', 'rU') as f: for line in f: if basepath in line: - if subprocess.call('sudo umount ' + line.split()[1], - stdout=devnull, stderr=devnull, - shell=True) != 0: - result = False - return result - - devnull = open(os.devnull, 'w') - - if isinstance(e, bb.event.BuildCompleted): - tmpdir = d.getVar('TMPDIR', True) - - if tmpdir: - basepath = tmpdir + '/work/' - - while not umount_all(basepath): - time.sleep(1) - - devnull.close() + subprocess.call('sudo umount -l ' + line.split()[1], + stdout=devnull, stderr=devnull, shell=True) } + +isar_handler[eventmask] = "bb.runqueue.runQueueExitWait bb.event.BuildCompleted" -- 2.16.4 ^ permalink raw reply [flat|nested] 18+ messages in thread
* [PATCH 3/3] Remove redundant recursive umounts 2018-12-05 9:29 [PATCH 0/3] umount fixes and cleanups Jan Kiszka 2018-12-05 9:29 ` [PATCH 1/3] ci: Wait for bitbake worker to finish before deleting artifacts Jan Kiszka 2018-12-05 9:29 ` [PATCH 2/3] isar-events: Improve umount handler Jan Kiszka @ 2018-12-05 9:29 ` Jan Kiszka 2018-12-05 11:12 ` [PATCH 0/3] umount fixes and cleanups Maxim Yu. Osipov 2018-12-07 13:46 ` Maxim Yu. Osipov 4 siblings, 0 replies; 18+ messages in thread From: Jan Kiszka @ 2018-12-05 9:29 UTC (permalink / raw) To: isar-users; +Cc: Cedric Hombourger From: Jan Kiszka <jan.kiszka@siemens.com> Lazily umounting also ensures that depending mounts are removed. Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com> --- meta/classes/isar-image.bbclass | 4 ++-- meta/recipes-core/isar-bootstrap/isar-bootstrap.inc | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/meta/classes/isar-image.bbclass b/meta/classes/isar-image.bbclass index 23b3a99..14b97dd 100644 --- a/meta/classes/isar-image.bbclass +++ b/meta/classes/isar-image.bbclass @@ -59,9 +59,9 @@ isar_image_cleanup() { -maxdepth 1 -name 'qemu-*-static' -type f -delete sudo umount -l ${IMAGE_ROOTFS}/isar-apt sudo rmdir ${IMAGE_ROOTFS}/isar-apt - sudo umount -R -l ${IMAGE_ROOTFS}/dev + sudo umount -l ${IMAGE_ROOTFS}/dev sudo umount -l ${IMAGE_ROOTFS}/proc - sudo umount -R -l ${IMAGE_ROOTFS}/sys + sudo umount -l ${IMAGE_ROOTFS}/sys sudo rm -f "${IMAGE_ROOTFS}/etc/apt/apt.conf.d/55isar-fallback.conf" if [ "${ISAR_USE_CACHED_BASE_REPO}" = "1" ]; then sudo umount -l ${IMAGE_ROOTFS}/base-apt diff --git a/meta/recipes-core/isar-bootstrap/isar-bootstrap.inc b/meta/recipes-core/isar-bootstrap/isar-bootstrap.inc index da077d0..811d50e 100644 --- a/meta/recipes-core/isar-bootstrap/isar-bootstrap.inc +++ b/meta/recipes-core/isar-bootstrap/isar-bootstrap.inc @@ -254,9 +254,9 @@ isar_bootstrap() { chroot "${ROOTFSDIR}" /usr/bin/apt-get dist-upgrade -y \ -o Debug::pkgProblemResolver=yes - umount -R -l "${ROOTFSDIR}/dev" + umount -l "${ROOTFSDIR}/dev" umount -l "${ROOTFSDIR}/proc" - umount -R -l "${ROOTFSDIR}/sys" + umount -l "${ROOTFSDIR}/sys" umount -l "${ROOTFSDIR}/base-apt" || true # Finalize debootstrap by setting the link in deploy -- 2.16.4 ^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [PATCH 0/3] umount fixes and cleanups 2018-12-05 9:29 [PATCH 0/3] umount fixes and cleanups Jan Kiszka ` (2 preceding siblings ...) 2018-12-05 9:29 ` [PATCH 3/3] Remove redundant recursive umounts Jan Kiszka @ 2018-12-05 11:12 ` Maxim Yu. Osipov 2018-12-05 11:32 ` Hombourger, Cedric 2018-12-05 12:14 ` Jan Kiszka 2018-12-07 13:46 ` Maxim Yu. Osipov 4 siblings, 2 replies; 18+ messages in thread From: Maxim Yu. Osipov @ 2018-12-05 11:12 UTC (permalink / raw) To: Jan Kiszka, isar-users; +Cc: Cedric Hombourger [-- Attachment #1: Type: text/plain, Size: 1500 bytes --] On 12/5/18 12:29 PM, Jan Kiszka wrote: > Patches related to resolving the pending CI issues as well as > simplifying the umounts used during cleanup. Tried to run in patch queue: 027b7cf Remove redundant recursive umounts c1bdc33 isar-events: Improve umount handler b354273 ci: Wait for bitbake worker to finish before deleting artifacts 9cf29e6 isar-bootstrap: Fix and cleanup bind mounting b354026 isar-image: umount base-apt when doing offline build e965c0d gitlab-ci: Switch to ci_build.sh ... After execution of problematic test case (I rebooted PC and executed steps in clean tree): my stretch Debian system was entered into unusable state as many important mounts were disappeared (see log of mount points before and after execution of last command attached). Maxim. > Jan > > Jan Kiszka (3): > ci: Wait for bitbake worker to finish before deleting artifacts > isar-events: Improve umount handler > Remove redundant recursive umounts > > meta/classes/isar-events.bbclass | 38 ++++++++-------------- > meta/classes/isar-image.bbclass | 4 +-- > .../recipes-core/isar-bootstrap/isar-bootstrap.inc | 4 +-- > scripts/ci_build.sh | 1 + > 4 files changed, 18 insertions(+), 29 deletions(-) > -- Maxim Osipov ilbers GmbH Maria-Merian-Str. 8 85521 Ottobrunn Germany +49 (151) 6517 6917 mosipov@ilbers.de http://ilbers.de/ Commercial register Munich, HRB 214197 General Manager: Baurzhan Ismagulov [-- Attachment #2: mount_after.txt --] [-- Type: text/plain, Size: 1260 bytes --] sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime) proc on /proc type proc (rw,nosuid,nodev,noexec,relatime) udev on /dev type devtmpfs (rw,nosuid,relatime,size=4015904k,nr_inodes=1003976,mode=755) tmpfs on /run type tmpfs (rw,nosuid,noexec,relatime,size=805840k,mode=755) /dev/sda3 on / type ext4 (rw,relatime,errors=remount-ro,data=ordered) tmpfs on /run/lock type tmpfs (rw,nosuid,nodev,noexec,relatime,size=5120k) systemd-1 on /proc/sys/fs/binfmt_misc type autofs (rw,relatime,fd=33,pgrp=1,timeout=0,minproto=5,maxproto=5,direct,pipe_ino=15456) /dev/sda1 on /boot/efi type vfat (rw,relatime,fmask=0002,dmask=0002,allow_utime=0020,codepage=437,iocharset=ascii,shortname=mixed,quiet,utf8,errors=remount-ro) /dev/sda5 on /home type ext4 (rw,relatime,data=ordered) binfmt_misc on /proc/sys/fs/binfmt_misc type binfmt_misc (rw,relatime) tmpfs on /run/user/114 type tmpfs (rw,nosuid,nodev,relatime,size=805836k,mode=700,uid=114,gid=116) gvfsd-fuse on /run/user/114/gvfs type fuse.gvfsd-fuse (rw,nosuid,nodev,relatime,user_id=114,group_id=116) tmpfs on /run/user/1000 type tmpfs (rw,nosuid,nodev,relatime,size=805836k,mode=700,uid=1000,gid=1000) gvfsd-fuse on /run/user/1000/gvfs type fuse.gvfsd-fuse (rw,nosuid,nodev,relatime,user_id=1000,group_id=1000) [-- Attachment #3: mount_before.txt --] [-- Type: text/plain, Size: 2877 bytes --] sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime) proc on /proc type proc (rw,nosuid,nodev,noexec,relatime) udev on /dev type devtmpfs (rw,nosuid,relatime,size=4015904k,nr_inodes=1003976,mode=755) devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000) tmpfs on /run type tmpfs (rw,nosuid,noexec,relatime,size=805840k,mode=755) /dev/sda3 on / type ext4 (rw,relatime,errors=remount-ro,data=ordered) securityfs on /sys/kernel/security type securityfs (rw,nosuid,nodev,noexec,relatime) tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev) tmpfs on /run/lock type tmpfs (rw,nosuid,nodev,noexec,relatime,size=5120k) tmpfs on /sys/fs/cgroup type tmpfs (ro,nosuid,nodev,noexec,mode=755) cgroup on /sys/fs/cgroup/systemd type cgroup (rw,nosuid,nodev,noexec,relatime,xattr,release_agent=/lib/systemd/systemd-cgroups-agent,name=systemd) pstore on /sys/fs/pstore type pstore (rw,nosuid,nodev,noexec,relatime) efivarfs on /sys/firmware/efi/efivars type efivarfs (rw,nosuid,nodev,noexec,relatime) cgroup on /sys/fs/cgroup/pids type cgroup (rw,nosuid,nodev,noexec,relatime,pids) cgroup on /sys/fs/cgroup/cpu,cpuacct type cgroup (rw,nosuid,nodev,noexec,relatime,cpu,cpuacct) cgroup on /sys/fs/cgroup/devices type cgroup (rw,nosuid,nodev,noexec,relatime,devices) cgroup on /sys/fs/cgroup/net_cls,net_prio type cgroup (rw,nosuid,nodev,noexec,relatime,net_cls,net_prio) cgroup on /sys/fs/cgroup/memory type cgroup (rw,nosuid,nodev,noexec,relatime,memory) cgroup on /sys/fs/cgroup/blkio type cgroup (rw,nosuid,nodev,noexec,relatime,blkio) cgroup on /sys/fs/cgroup/freezer type cgroup (rw,nosuid,nodev,noexec,relatime,freezer) cgroup on /sys/fs/cgroup/perf_event type cgroup (rw,nosuid,nodev,noexec,relatime,perf_event) cgroup on /sys/fs/cgroup/cpuset type cgroup (rw,nosuid,nodev,noexec,relatime,cpuset) systemd-1 on /proc/sys/fs/binfmt_misc type autofs (rw,relatime,fd=33,pgrp=1,timeout=0,minproto=5,maxproto=5,direct,pipe_ino=15456) mqueue on /dev/mqueue type mqueue (rw,relatime) debugfs on /sys/kernel/debug type debugfs (rw,relatime) hugetlbfs on /dev/hugepages type hugetlbfs (rw,relatime) /dev/sda1 on /boot/efi type vfat (rw,relatime,fmask=0002,dmask=0002,allow_utime=0020,codepage=437,iocharset=ascii,shortname=mixed,quiet,utf8,errors=remount-ro) /dev/sda5 on /home type ext4 (rw,relatime,data=ordered) binfmt_misc on /proc/sys/fs/binfmt_misc type binfmt_misc (rw,relatime) tmpfs on /run/user/114 type tmpfs (rw,nosuid,nodev,relatime,size=805836k,mode=700,uid=114,gid=116) gvfsd-fuse on /run/user/114/gvfs type fuse.gvfsd-fuse (rw,nosuid,nodev,relatime,user_id=114,group_id=116) fusectl on /sys/fs/fuse/connections type fusectl (rw,relatime) tmpfs on /run/user/1000 type tmpfs (rw,nosuid,nodev,relatime,size=805836k,mode=700,uid=1000,gid=1000) gvfsd-fuse on /run/user/1000/gvfs type fuse.gvfsd-fuse (rw,nosuid,nodev,relatime,user_id=1000,group_id=1000) ^ permalink raw reply [flat|nested] 18+ messages in thread
* RE: [PATCH 0/3] umount fixes and cleanups 2018-12-05 11:12 ` [PATCH 0/3] umount fixes and cleanups Maxim Yu. Osipov @ 2018-12-05 11:32 ` Hombourger, Cedric 2018-12-05 12:14 ` Jan Kiszka 1 sibling, 0 replies; 18+ messages in thread From: Hombourger, Cedric @ 2018-12-05 11:32 UTC (permalink / raw) To: Maxim Yu. Osipov, Jan Kiszka, isar-users FWIW, here is an excerpt of the script being used in our (Mentor) CI # --------------------------------------------------------------------------------------------------------------------- # Clean previous build # --------------------------------------------------------------------------------------------------------------------- check_build_mounts() { local tries=0 while : do mounts=$(mount|awk '{print $3;}'|grep ^${PWD}/ || true); [ -z "${mounts}" ] && break for m in ${mounts} do sudo umount ${m} 2>/dev/null || true done # Abort if some mounts remain after multiple attempts tries=$((${tries} + 1)) if [ ${tries} -ge 3 ] then echo "# error: mounts within 'tmp' are busy!" >&2 exit 1 fi sleep 1 done } # Make sure no mounts were left from a previous build before wiping "tmp" out echo "# info: trying to remove mounts from previous build(s)..." check_build_mounts # Wipe out "tmp" if [ "${CLEANBUILD}" -eq "1" ]; then echo "# info: deleting previous build(s)..." sudo rm -rf tmp fi -----Original Message----- From: Maxim Yu. Osipov [mailto:mosipov@ilbers.de] Sent: Wednesday, December 5, 2018 2:12 PM To: Jan Kiszka <jan.kiszka@siemens.com>; isar-users <isar-users@googlegroups.com> Cc: Hombourger, Cedric <Cedric_Hombourger@mentor.com> Subject: Re: [PATCH 0/3] umount fixes and cleanups On 12/5/18 12:29 PM, Jan Kiszka wrote: > Patches related to resolving the pending CI issues as well as > simplifying the umounts used during cleanup. Tried to run in patch queue: 027b7cf Remove redundant recursive umounts c1bdc33 isar-events: Improve umount handler b354273 ci: Wait for bitbake worker to finish before deleting artifacts 9cf29e6 isar-bootstrap: Fix and cleanup bind mounting b354026 isar-image: umount base-apt when doing offline build e965c0d gitlab-ci: Switch to ci_build.sh ... After execution of problematic test case (I rebooted PC and executed steps in clean tree): my stretch Debian system was entered into unusable state as many important mounts were disappeared (see log of mount points before and after execution of last command attached). Maxim. > Jan > > Jan Kiszka (3): > ci: Wait for bitbake worker to finish before deleting artifacts > isar-events: Improve umount handler > Remove redundant recursive umounts > > meta/classes/isar-events.bbclass | 38 ++++++++-------------- > meta/classes/isar-image.bbclass | 4 +-- > .../recipes-core/isar-bootstrap/isar-bootstrap.inc | 4 +-- > scripts/ci_build.sh | 1 + > 4 files changed, 18 insertions(+), 29 deletions(-) > -- Maxim Osipov ilbers GmbH Maria-Merian-Str. 8 85521 Ottobrunn Germany +49 (151) 6517 6917 mosipov@ilbers.de http://ilbers.de/ Commercial register Munich, HRB 214197 General Manager: Baurzhan Ismagulov ^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [PATCH 0/3] umount fixes and cleanups 2018-12-05 11:12 ` [PATCH 0/3] umount fixes and cleanups Maxim Yu. Osipov 2018-12-05 11:32 ` Hombourger, Cedric @ 2018-12-05 12:14 ` Jan Kiszka 2018-12-05 12:31 ` Hombourger, Cedric 2018-12-05 14:26 ` Maxim Yu. Osipov 1 sibling, 2 replies; 18+ messages in thread From: Jan Kiszka @ 2018-12-05 12:14 UTC (permalink / raw) To: Maxim Yu. Osipov, isar-users; +Cc: Cedric Hombourger On 05.12.18 12:12, Maxim Yu. Osipov wrote: > On 12/5/18 12:29 PM, Jan Kiszka wrote: >> Patches related to resolving the pending CI issues as well as >> simplifying the umounts used during cleanup. > > Tried to run in patch queue: > > 027b7cf Remove redundant recursive umounts > c1bdc33 isar-events: Improve umount handler > b354273 ci: Wait for bitbake worker to finish before deleting artifacts > 9cf29e6 isar-bootstrap: Fix and cleanup bind mounting > b354026 isar-image: umount base-apt when doing offline build > e965c0d gitlab-ci: Switch to ci_build.sh > ... > > After execution of problematic test case (I rebooted PC and executed steps in > clean tree): > > my stretch Debian system was entered into unusable state > as many important mounts were disappeared (see log of mount points > before and after execution of last command attached). OK, so I took the time and extracted the root cause. We may see a Debian 4.9 kernel bug here: # mkdir my-mnt # mount --rbind /sys my-mnt # mount --make-rslave my-mnt # umount {-R,-l,-R -l} my-mnt # rmdir my-mnt rmdir: failed to remove 'my-mnt': Device or resource busy This works fine on my Leap 15.0 kernel (4.12) as well as the 4.4 kernel (Ubuntu) used on our CI server. *This* is information we can base commits on. Also, we can file a bug against Debian with this. Could you do that (keep my in CC)? Thanks, Jan -- Siemens AG, Corporate Technology, CT RDA IOT SES-DE Corporate Competence Center Embedded Linux ^ permalink raw reply [flat|nested] 18+ messages in thread
* RE: [PATCH 0/3] umount fixes and cleanups 2018-12-05 12:14 ` Jan Kiszka @ 2018-12-05 12:31 ` Hombourger, Cedric 2018-12-05 12:35 ` Jan Kiszka 2018-12-05 14:26 ` Maxim Yu. Osipov 1 sibling, 1 reply; 18+ messages in thread From: Hombourger, Cedric @ 2018-12-05 12:31 UTC (permalink / raw) To: Jan Kiszka, Maxim Yu. Osipov, isar-users I was able to use the following work-around for your test-case: # run the following command until all mounts are gone umount $(mount |grep $PWD/my-mnt|awk '{print $3}') umount -R or -l indeed failed Cedric -----Original Message----- From: Jan Kiszka [mailto:jan.kiszka@siemens.com] Sent: Wednesday, December 5, 2018 3:15 PM To: Maxim Yu. Osipov <mosipov@ilbers.de>; isar-users <isar-users@googlegroups.com> Cc: Hombourger, Cedric <Cedric_Hombourger@mentor.com> Subject: Re: [PATCH 0/3] umount fixes and cleanups On 05.12.18 12:12, Maxim Yu. Osipov wrote: > On 12/5/18 12:29 PM, Jan Kiszka wrote: >> Patches related to resolving the pending CI issues as well as >> simplifying the umounts used during cleanup. > > Tried to run in patch queue: > > 027b7cf Remove redundant recursive umounts > c1bdc33 isar-events: Improve umount handler > b354273 ci: Wait for bitbake worker to finish before deleting > artifacts > 9cf29e6 isar-bootstrap: Fix and cleanup bind mounting > b354026 isar-image: umount base-apt when doing offline build e965c0d > gitlab-ci: Switch to ci_build.sh ... > > After execution of problematic test case (I rebooted PC and executed > steps in clean tree): > > my stretch Debian system was entered into unusable state as many > important mounts were disappeared (see log of mount points before and > after execution of last command attached). OK, so I took the time and extracted the root cause. We may see a Debian 4.9 kernel bug here: # mkdir my-mnt # mount --rbind /sys my-mnt # mount --make-rslave my-mnt # umount {-R,-l,-R -l} my-mnt # rmdir my-mnt rmdir: failed to remove 'my-mnt': Device or resource busy This works fine on my Leap 15.0 kernel (4.12) as well as the 4.4 kernel (Ubuntu) used on our CI server. *This* is information we can base commits on. Also, we can file a bug against Debian with this. Could you do that (keep my in CC)? Thanks, Jan -- Siemens AG, Corporate Technology, CT RDA IOT SES-DE Corporate Competence Center Embedded Linux ^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [PATCH 0/3] umount fixes and cleanups 2018-12-05 12:31 ` Hombourger, Cedric @ 2018-12-05 12:35 ` Jan Kiszka 2018-12-05 12:48 ` Hombourger, Cedric 0 siblings, 1 reply; 18+ messages in thread From: Jan Kiszka @ 2018-12-05 12:35 UTC (permalink / raw) To: Hombourger, Cedric, Maxim Yu. Osipov, isar-users On 05.12.18 13:31, Hombourger, Cedric wrote: > I was able to use the following work-around for your test-case: > > # run the following command until all mounts are gone > umount $(mount |grep $PWD/my-mnt|awk '{print $3}') Does that listing always produce the right ordering for umount, or does the order not matter? Just for me to remember: We do want the recursive mounts, don't we? Or, said differently, what is the downside of Maxim's revert for use cases you see? Jan > > umount -R or -l indeed failed > > Cedric > > -----Original Message----- > From: Jan Kiszka [mailto:jan.kiszka@siemens.com] > Sent: Wednesday, December 5, 2018 3:15 PM > To: Maxim Yu. Osipov <mosipov@ilbers.de>; isar-users <isar-users@googlegroups.com> > Cc: Hombourger, Cedric <Cedric_Hombourger@mentor.com> > Subject: Re: [PATCH 0/3] umount fixes and cleanups > > On 05.12.18 12:12, Maxim Yu. Osipov wrote: >> On 12/5/18 12:29 PM, Jan Kiszka wrote: >>> Patches related to resolving the pending CI issues as well as >>> simplifying the umounts used during cleanup. >> >> Tried to run in patch queue: >> >> 027b7cf Remove redundant recursive umounts >> c1bdc33 isar-events: Improve umount handler >> b354273 ci: Wait for bitbake worker to finish before deleting >> artifacts >> 9cf29e6 isar-bootstrap: Fix and cleanup bind mounting >> b354026 isar-image: umount base-apt when doing offline build e965c0d >> gitlab-ci: Switch to ci_build.sh ... >> >> After execution of problematic test case (I rebooted PC and executed >> steps in clean tree): >> >> my stretch Debian system was entered into unusable state as many >> important mounts were disappeared (see log of mount points before and >> after execution of last command attached). > > OK, so I took the time and extracted the root cause. We may see a Debian 4.9 kernel bug here: > > # mkdir my-mnt > # mount --rbind /sys my-mnt > # mount --make-rslave my-mnt > # umount {-R,-l,-R -l} my-mnt > # rmdir my-mnt > rmdir: failed to remove 'my-mnt': Device or resource busy > > This works fine on my Leap 15.0 kernel (4.12) as well as the 4.4 kernel (Ubuntu) used on our CI server. > > *This* is information we can base commits on. Also, we can file a bug against Debian with this. Could you do that (keep my in CC)? > > Thanks, > Jan > > -- > Siemens AG, Corporate Technology, CT RDA IOT SES-DE Corporate Competence Center Embedded Linux > -- Siemens AG, Corporate Technology, CT RDA IOT SES-DE Corporate Competence Center Embedded Linux ^ permalink raw reply [flat|nested] 18+ messages in thread
* RE: [PATCH 0/3] umount fixes and cleanups 2018-12-05 12:35 ` Jan Kiszka @ 2018-12-05 12:48 ` Hombourger, Cedric 2018-12-05 12:54 ` Jan Kiszka 0 siblings, 1 reply; 18+ messages in thread From: Hombourger, Cedric @ 2018-12-05 12:48 UTC (permalink / raw) To: Jan Kiszka, Maxim Yu. Osipov, isar-users Hi Jan, In my testing, the only mounts that were really needed for the go packages I was building are: /dev # was already mounted before our changes /dev/pts # was not mounted before /sys # was not mounted before I have some doubts about /dev/shm; I cannot recall if that one was truly needed Regarding ordering, this brute force umount command will produce errors for sub-mounts (e.g. when trying to umount /sys/fs/cgroup before /sys/fs/cgroup/blkio) I seem to remember that in the early days Isar would just loop over its mounts until it got rid of everything Cedric -----Original Message----- From: Jan Kiszka [mailto:jan.kiszka@siemens.com] Sent: Wednesday, December 5, 2018 3:36 PM To: Hombourger, Cedric <Cedric_Hombourger@mentor.com>; Maxim Yu. Osipov <mosipov@ilbers.de>; isar-users <isar-users@googlegroups.com> Subject: Re: [PATCH 0/3] umount fixes and cleanups On 05.12.18 13:31, Hombourger, Cedric wrote: > I was able to use the following work-around for your test-case: > > # run the following command until all mounts are gone umount $(mount > |grep $PWD/my-mnt|awk '{print $3}') Does that listing always produce the right ordering for umount, or does the order not matter? Just for me to remember: We do want the recursive mounts, don't we? Or, said differently, what is the downside of Maxim's revert for use cases you see? Jan > > umount -R or -l indeed failed > > Cedric > > -----Original Message----- > From: Jan Kiszka [mailto:jan.kiszka@siemens.com] > Sent: Wednesday, December 5, 2018 3:15 PM > To: Maxim Yu. Osipov <mosipov@ilbers.de>; isar-users > <isar-users@googlegroups.com> > Cc: Hombourger, Cedric <Cedric_Hombourger@mentor.com> > Subject: Re: [PATCH 0/3] umount fixes and cleanups > > On 05.12.18 12:12, Maxim Yu. Osipov wrote: >> On 12/5/18 12:29 PM, Jan Kiszka wrote: >>> Patches related to resolving the pending CI issues as well as >>> simplifying the umounts used during cleanup. >> >> Tried to run in patch queue: >> >> 027b7cf Remove redundant recursive umounts >> c1bdc33 isar-events: Improve umount handler >> b354273 ci: Wait for bitbake worker to finish before deleting >> artifacts >> 9cf29e6 isar-bootstrap: Fix and cleanup bind mounting >> b354026 isar-image: umount base-apt when doing offline build e965c0d >> gitlab-ci: Switch to ci_build.sh ... >> >> After execution of problematic test case (I rebooted PC and executed >> steps in clean tree): >> >> my stretch Debian system was entered into unusable state as many >> important mounts were disappeared (see log of mount points before and >> after execution of last command attached). > > OK, so I took the time and extracted the root cause. We may see a Debian 4.9 kernel bug here: > > # mkdir my-mnt > # mount --rbind /sys my-mnt > # mount --make-rslave my-mnt > # umount {-R,-l,-R -l} my-mnt > # rmdir my-mnt > rmdir: failed to remove 'my-mnt': Device or resource busy > > This works fine on my Leap 15.0 kernel (4.12) as well as the 4.4 kernel (Ubuntu) used on our CI server. > > *This* is information we can base commits on. Also, we can file a bug against Debian with this. Could you do that (keep my in CC)? > > Thanks, > Jan > > -- > Siemens AG, Corporate Technology, CT RDA IOT SES-DE Corporate > Competence Center Embedded Linux > -- Siemens AG, Corporate Technology, CT RDA IOT SES-DE Corporate Competence Center Embedded Linux ^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [PATCH 0/3] umount fixes and cleanups 2018-12-05 12:48 ` Hombourger, Cedric @ 2018-12-05 12:54 ` Jan Kiszka 0 siblings, 0 replies; 18+ messages in thread From: Jan Kiszka @ 2018-12-05 12:54 UTC (permalink / raw) To: Hombourger, Cedric, Maxim Yu. Osipov, isar-users On 05.12.18 13:48, Hombourger, Cedric wrote: > Hi Jan, > > In my testing, the only mounts that were really needed for the go packages I was building are: > > /dev # was already mounted before our changes > /dev/pts # was not mounted before > /sys # was not mounted before > > I have some doubts about /dev/shm; I cannot recall if that one was truly needed OK, but then I would suggest, when reverting the bind mount, to add /dev/pts and (to be safe) maybe also /dev/shm explicitly and umount them also explicitly. And then we should finally consolidate common mount and umount for chroots into one central helper each. > > Regarding ordering, this brute force umount command will produce errors for sub-mounts (e.g. when trying to umount /sys/fs/cgroup before /sys/fs/cgroup/blkio) > I seem to remember that in the early days Isar would just loop over its mounts until it got rid of everything OK, so this targets isar_handler() only. But we also have (and need) umounts elsewhere. Jan -- Siemens AG, Corporate Technology, CT RDA IOT SES-DE Corporate Competence Center Embedded Linux ^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [PATCH 0/3] umount fixes and cleanups 2018-12-05 12:14 ` Jan Kiszka 2018-12-05 12:31 ` Hombourger, Cedric @ 2018-12-05 14:26 ` Maxim Yu. Osipov 2018-12-05 14:52 ` Jan Kiszka 1 sibling, 1 reply; 18+ messages in thread From: Maxim Yu. Osipov @ 2018-12-05 14:26 UTC (permalink / raw) To: Jan Kiszka, isar-users; +Cc: Cedric Hombourger On 12/5/18 3:14 PM, Jan Kiszka wrote: > On 05.12.18 12:12, Maxim Yu. Osipov wrote: >> On 12/5/18 12:29 PM, Jan Kiszka wrote: >>> Patches related to resolving the pending CI issues as well as >>> simplifying the umounts used during cleanup. >> >> Tried to run in patch queue: >> >> 027b7cf Remove redundant recursive umounts >> c1bdc33 isar-events: Improve umount handler >> b354273 ci: Wait for bitbake worker to finish before deleting artifacts >> 9cf29e6 isar-bootstrap: Fix and cleanup bind mounting >> b354026 isar-image: umount base-apt when doing offline build >> e965c0d gitlab-ci: Switch to ci_build.sh >> ... >> >> After execution of problematic test case (I rebooted PC and executed >> steps in clean tree): >> >> my stretch Debian system was entered into unusable state >> as many important mounts were disappeared (see log of mount points >> before and after execution of last command attached). > > OK, so I took the time and extracted the root cause. We may see a Debian > 4.9 kernel bug here: > > # mkdir my-mnt > # mount --rbind /sys my-mnt > # mount --make-rslave my-mnt > # umount {-R,-l,-R -l} my-mnt > # rmdir my-mnt > rmdir: failed to remove 'my-mnt': Device or resource busy > > This works fine on my Leap 15.0 kernel (4.12) as well as the 4.4 kernel > (Ubuntu) used on our CI server. This also works fine on my Debian 4.9 kernel (I've ran this sequence for every combination of {-R, -l , -R -l}): > root@tiberius:~# uname -a > Linux tiberius 4.9.0-8-amd64 #1 SMP Debian 4.9.110-3+deb9u6 (2018-10-08) x86_64 GNU/Linux > root@tiberius:~# mkdir my-mnt > root@tiberius:~# mount --rbind /sys my-mnt > root@tiberius:~# mount --make-rslave my-mnt > root@tiberius:~# umount -R my-mnt/ > root@tiberius:~# rmdir my-mnt/ > root@tiberius:~# mkdir my-mnt > root@tiberius:~# mount --rbind /sys my-mnt > root@tiberius:~# mount --make-rslave my-mnt > root@tiberius:~# umount -l my-mnt > root@tiberius:~# rmdir my-mnt/ > root@tiberius:~# mkdir my-mnt > root@tiberius:~# mount --rbind /sys my-mnt > root@tiberius:~# mount --make-rslave my-mnt > root@tiberius:~# umount -R -l my-mnt > root@tiberius:~# rmdir my-mnt/ > root@tiberius:~# Thanks, Maxim. > *This* is information we can base commits on. Also, we can file a bug > against Debian with this. Could you do that (keep my in CC)? > Thanks, > Jan > -- Maxim Osipov ilbers GmbH Maria-Merian-Str. 8 85521 Ottobrunn Germany +49 (151) 6517 6917 mosipov@ilbers.de http://ilbers.de/ Commercial register Munich, HRB 214197 General Manager: Baurzhan Ismagulov ^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [PATCH 0/3] umount fixes and cleanups 2018-12-05 14:26 ` Maxim Yu. Osipov @ 2018-12-05 14:52 ` Jan Kiszka 2018-12-05 23:08 ` Jan Kiszka 0 siblings, 1 reply; 18+ messages in thread From: Jan Kiszka @ 2018-12-05 14:52 UTC (permalink / raw) To: Maxim Yu. Osipov, isar-users; +Cc: Cedric Hombourger On 05.12.18 15:26, Maxim Yu. Osipov wrote: > On 12/5/18 3:14 PM, Jan Kiszka wrote: >> On 05.12.18 12:12, Maxim Yu. Osipov wrote: >>> On 12/5/18 12:29 PM, Jan Kiszka wrote: >>>> Patches related to resolving the pending CI issues as well as >>>> simplifying the umounts used during cleanup. >>> >>> Tried to run in patch queue: >>> >>> 027b7cf Remove redundant recursive umounts >>> c1bdc33 isar-events: Improve umount handler >>> b354273 ci: Wait for bitbake worker to finish before deleting artifacts >>> 9cf29e6 isar-bootstrap: Fix and cleanup bind mounting >>> b354026 isar-image: umount base-apt when doing offline build >>> e965c0d gitlab-ci: Switch to ci_build.sh >>> ... >>> >>> After execution of problematic test case (I rebooted PC and executed steps in >>> clean tree): >>> >>> my stretch Debian system was entered into unusable state >>> as many important mounts were disappeared (see log of mount points >>> before and after execution of last command attached). >> >> OK, so I took the time and extracted the root cause. We may see a Debian 4.9 >> kernel bug here: >> >> # mkdir my-mnt >> # mount --rbind /sys my-mnt >> # mount --make-rslave my-mnt >> # umount {-R,-l,-R -l} my-mnt >> # rmdir my-mnt >> rmdir: failed to remove 'my-mnt': Device or resource busy >> >> This works fine on my Leap 15.0 kernel (4.12) as well as the 4.4 kernel >> (Ubuntu) used on our CI server. > > This also works fine on my Debian 4.9 kernel (I've ran this sequence for every > combination of {-R, -l , -R -l}): > >> root@tiberius:~# uname -a >> Linux tiberius 4.9.0-8-amd64 #1 SMP Debian 4.9.110-3+deb9u6 (2018-10-08) >> x86_64 GNU/Linux Hmpf, rechecking... I was still on 3.16 from the jessie that I upgraded from. Works fine with 4.9, indeed. >> root@tiberius:~# mkdir my-mnt >> root@tiberius:~# mount --rbind /sys my-mnt >> root@tiberius:~# mount --make-rslave my-mnt >> root@tiberius:~# umount -R my-mnt/ >> root@tiberius:~# rmdir my-mnt/ >> root@tiberius:~# mkdir my-mnt >> root@tiberius:~# mount --rbind /sys my-mnt >> root@tiberius:~# mount --make-rslave my-mnt >> root@tiberius:~# umount -l my-mnt >> root@tiberius:~# rmdir my-mnt/ >> root@tiberius:~# mkdir my-mnt >> root@tiberius:~# mount --rbind /sys my-mnt >> root@tiberius:~# mount --make-rslave my-mnt >> root@tiberius:~# umount -R -l my-mnt >> root@tiberius:~# rmdir my-mnt/ >> root@tiberius:~# > OK, then bind-mounting itself likely not the root cause, and we need to dig further. Jan -- Siemens AG, Corporate Technology, CT RDA IOT SES-DE Corporate Competence Center Embedded Linux ^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [PATCH 0/3] umount fixes and cleanups 2018-12-05 14:52 ` Jan Kiszka @ 2018-12-05 23:08 ` Jan Kiszka 0 siblings, 0 replies; 18+ messages in thread From: Jan Kiszka @ 2018-12-05 23:08 UTC (permalink / raw) To: Maxim Yu. Osipov, isar-users, Henning Schild; +Cc: Cedric Hombourger On 05.12.18 15:52, [ext] Jan Kiszka wrote: > On 05.12.18 15:26, Maxim Yu. Osipov wrote: >> On 12/5/18 3:14 PM, Jan Kiszka wrote: >>> On 05.12.18 12:12, Maxim Yu. Osipov wrote: >>>> On 12/5/18 12:29 PM, Jan Kiszka wrote: >>>>> Patches related to resolving the pending CI issues as well as >>>>> simplifying the umounts used during cleanup. >>>> >>>> Tried to run in patch queue: >>>> >>>> 027b7cf Remove redundant recursive umounts >>>> c1bdc33 isar-events: Improve umount handler >>>> b354273 ci: Wait for bitbake worker to finish before deleting artifacts >>>> 9cf29e6 isar-bootstrap: Fix and cleanup bind mounting >>>> b354026 isar-image: umount base-apt when doing offline build >>>> e965c0d gitlab-ci: Switch to ci_build.sh >>>> ... >>>> >>>> After execution of problematic test case (I rebooted PC and executed steps >>>> in clean tree): >>>> >>>> my stretch Debian system was entered into unusable state >>>> as many important mounts were disappeared (see log of mount points >>>> before and after execution of last command attached). >>> >>> OK, so I took the time and extracted the root cause. We may see a Debian 4.9 >>> kernel bug here: >>> >>> # mkdir my-mnt >>> # mount --rbind /sys my-mnt >>> # mount --make-rslave my-mnt >>> # umount {-R,-l,-R -l} my-mnt >>> # rmdir my-mnt >>> rmdir: failed to remove 'my-mnt': Device or resource busy >>> >>> This works fine on my Leap 15.0 kernel (4.12) as well as the 4.4 kernel >>> (Ubuntu) used on our CI server. >> >> This also works fine on my Debian 4.9 kernel (I've ran this sequence for every >> combination of {-R, -l , -R -l}): >> >>> root@tiberius:~# uname -a >>> Linux tiberius 4.9.0-8-amd64 #1 SMP Debian 4.9.110-3+deb9u6 (2018-10-08) >>> x86_64 GNU/Linux > > Hmpf, rechecking... I was still on 3.16 from the jessie that I upgraded from. > Works fine with 4.9, indeed. > >>> root@tiberius:~# mkdir my-mnt >>> root@tiberius:~# mount --rbind /sys my-mnt >>> root@tiberius:~# mount --make-rslave my-mnt >>> root@tiberius:~# umount -R my-mnt/ >>> root@tiberius:~# rmdir my-mnt/ >>> root@tiberius:~# mkdir my-mnt >>> root@tiberius:~# mount --rbind /sys my-mnt >>> root@tiberius:~# mount --make-rslave my-mnt >>> root@tiberius:~# umount -l my-mnt >>> root@tiberius:~# rmdir my-mnt/ >>> root@tiberius:~# mkdir my-mnt >>> root@tiberius:~# mount --rbind /sys my-mnt >>> root@tiberius:~# mount --make-rslave my-mnt >>> root@tiberius:~# umount -R -l my-mnt >>> root@tiberius:~# rmdir my-mnt/ >>> root@tiberius:~# >> > > OK, then bind-mounting itself likely not the root cause, and we need to dig > further. > Here is the real solution, or at least a much better workaround, without any reverts: diff --git a/meta/classes/wic-img.bbclass b/meta/classes/wic-img.bbclass index 225463e..c66d208 100644 --- a/meta/classes/wic-img.bbclass +++ b/meta/classes/wic-img.bbclass @@ -90,7 +90,7 @@ do_wic_image() { for dir in ${BBLAYERS} ${STAGING_DIR} ${ISARROOT}/scripts; do sudo mkdir -p ${BUILDCHROOT_DIR}/$dir mountpoint ${BUILDCHROOT_DIR}/$dir >/dev/null 2>&1 \ - || sudo mount --bind $dir ${BUILDCHROOT_DIR}/$dir + || sudo mount --bind --make-private $dir ${BUILDCHROOT_DIR}/$dir done export FAKEROOTCMD=${FAKEROOTCMD} export BUILDDIR=${BUILDDIR} I'll explain tomorrow, also what else is broken in do_wic_image. Jan ^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [PATCH 0/3] umount fixes and cleanups 2018-12-05 9:29 [PATCH 0/3] umount fixes and cleanups Jan Kiszka ` (3 preceding siblings ...) 2018-12-05 11:12 ` [PATCH 0/3] umount fixes and cleanups Maxim Yu. Osipov @ 2018-12-07 13:46 ` Maxim Yu. Osipov 4 siblings, 0 replies; 18+ messages in thread From: Maxim Yu. Osipov @ 2018-12-07 13:46 UTC (permalink / raw) To: Jan Kiszka, isar-users; +Cc: Cedric Hombourger On 12/5/18 12:29 PM, Jan Kiszka wrote: > Patches related to resolving the pending CI issues as well as > simplifying the umounts used during cleanup. Applied to the 'next', Thanks, Maxim. > Jan > > Jan Kiszka (3): > ci: Wait for bitbake worker to finish before deleting artifacts > isar-events: Improve umount handler > Remove redundant recursive umounts > > meta/classes/isar-events.bbclass | 38 ++++++++-------------- > meta/classes/isar-image.bbclass | 4 +-- > .../recipes-core/isar-bootstrap/isar-bootstrap.inc | 4 +-- > scripts/ci_build.sh | 1 + > 4 files changed, 18 insertions(+), 29 deletions(-) > -- Maxim Osipov ilbers GmbH Maria-Merian-Str. 8 85521 Ottobrunn Germany +49 (151) 6517 6917 mosipov@ilbers.de http://ilbers.de/ Commercial register Munich, HRB 214197 General Manager: Baurzhan Ismagulov ^ permalink raw reply [flat|nested] 18+ messages in thread
end of thread, other threads:[~2018-12-07 13:46 UTC | newest] Thread overview: 18+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2018-12-05 9:29 [PATCH 0/3] umount fixes and cleanups Jan Kiszka 2018-12-05 9:29 ` [PATCH 1/3] ci: Wait for bitbake worker to finish before deleting artifacts Jan Kiszka 2018-12-05 9:52 ` Hombourger, Cedric 2018-12-05 9:59 ` Maxim Yu. Osipov 2018-12-05 10:04 ` Jan Kiszka 2018-12-05 9:29 ` [PATCH 2/3] isar-events: Improve umount handler Jan Kiszka 2018-12-05 9:29 ` [PATCH 3/3] Remove redundant recursive umounts Jan Kiszka 2018-12-05 11:12 ` [PATCH 0/3] umount fixes and cleanups Maxim Yu. Osipov 2018-12-05 11:32 ` Hombourger, Cedric 2018-12-05 12:14 ` Jan Kiszka 2018-12-05 12:31 ` Hombourger, Cedric 2018-12-05 12:35 ` Jan Kiszka 2018-12-05 12:48 ` Hombourger, Cedric 2018-12-05 12:54 ` Jan Kiszka 2018-12-05 14:26 ` Maxim Yu. Osipov 2018-12-05 14:52 ` Jan Kiszka 2018-12-05 23:08 ` Jan Kiszka 2018-12-07 13:46 ` Maxim Yu. Osipov
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox