[PATCH] initramfs: Avoid hanging mounts on failed update-initramfs

6 views
Skip to first unread message

Anton Mikanovich

unread,
Oct 17, 2024, 3:58:03 AM10/17/24
to isar-...@googlegroups.com, Anton Mikanovich
If update-initramfs fails during do_generate_initramfs task execution
there will be mounts left behind.
Protect it with a trap for cleanup in case of failure.

Signed-off-by: Anton Mikanovich <ami...@ilbers.de>
---
meta/classes/initramfs.bbclass | 4 ++++
1 file changed, 4 insertions(+)

diff --git a/meta/classes/initramfs.bbclass b/meta/classes/initramfs.bbclass
index 42013356..0197a60b 100644
--- a/meta/classes/initramfs.bbclass
+++ b/meta/classes/initramfs.bbclass
@@ -35,6 +35,10 @@ do_generate_initramfs[sstate-inputdirs] = "${DEPLOYDIR}"
do_generate_initramfs[sstate-outputdirs] = "${DEPLOY_DIR_IMAGE}"
do_generate_initramfs() {
rootfs_do_mounts
+
+ trap 'exit 1' INT HUP QUIT TERM ALRM USR1
+ trap 'rootfs_do_umounts' EXIT
+
rootfs_do_qemu

sudo -E chroot "${INITRAMFS_ROOTFS}" sh -c '\
--
2.34.1

Anton Mikanovich

unread,
Oct 24, 2024, 6:10:16 AM10/24/24
to isar-...@googlegroups.com, Anton Mikanovich
If update-initramfs fails during do_generate_initramfs task execution
there will be mounts left behind:

| E: /usr/share/initramfs-tools/hooks/isar-example failed with return 1.
| update-initramfs: failed for /boot/initrd.img-6.1.0-26-amd64 with 1.
| WARNING: exit code 1 from a shell command.
ERROR: Task (mc:qemuamd64-bookworm:isar/meta-isar/recipes-initramfs/images/isar-initramfs.bb:do_generate_initramfs) failed with exit code '1'
NOTE: Tasks Summary: Attempted 38 tasks of which 27 didn't need to be rerun and 1 failed.
WARNING: build/tmp/work/debian-bookworm-amd64/isar-initramfs-qemuamd64/1.0-r0/rootfs/isar-apt left mounted, unmounting...
WARNING: build/tmp/work/debian-bookworm-amd64/isar-initramfs-qemuamd64/1.0-r0/rootfs/sys left mounted, unmounting...
WARNING: build/tmp/work/debian-bookworm-amd64/isar-initramfs-qemuamd64/1.0-r0/rootfs/proc left mounted, unmounting...
WARNING: build/tmp/work/debian-bookworm-amd64/isar-initramfs-qemuamd64/1.0-r0/rootfs/dev/pts left mounted, unmounting...
WARNING: build/tmp/work/debian-bookworm-amd64/isar-initramfs-qemuamd64/1.0-r0/rootfs/dev/shm left mounted, unmounting...
WARNING: build/tmp/work/debian-bookworm-amd64/isar-initramfs-qemuamd64/1.0-r0/rootfs/dev left mounted, unmounting...

Protect mounting with a trap for cleanup in case of failure.

Uladzimir Bely

unread,
Oct 24, 2024, 6:41:05 AM10/24/24
to Anton Mikanovich, isar-...@googlegroups.com
Since patch v2 is technically a v1 with updated commit message, already
well-tested in CI, we would like to merge it soon (e.g. 2024-10-), if
there are no objections.

--
Best regards,
Uladzimir.

Uladzimir Bely

unread,
Oct 24, 2024, 6:43:10 AM10/24/24
to isar-...@googlegroups.com
On Thu, 2024-10-24 at 13:40 +0300, Uladzimir Bely wrote:
> Since patch v2 is technically a v1 with updated commit message,
> already
> well-tested in CI, we would like to merge it soon (e.g. 2024-10-), if
> there are no objections.

Sorry, 2024-10-25 (tomorrow) was meant.


--
Best regards,
Uladzimir.

Uladzimir Bely

unread,
Oct 25, 2024, 9:58:23 AM10/25/24
to Anton Mikanovich, isar-...@googlegroups.com
On Thu, 2024-10-24 at 13:10 +0300, Anton Mikanovich wrote:
> If update-initramfs fails during do_generate_initramfs task execution
> there will be mounts left behind:
>
> > E: /usr/share/initramfs-tools/hooks/isar-example failed with return
> > 1.
> > update-initramfs: failed for /boot/initrd.img-6.1.0-26-amd64 with
> > 1.
> > WARNING: exit code 1 from a shell command.
> ERROR: Task (mc:qemuamd64-bookworm:isar/meta-isar/recipes-
> initramfs/images/isar-initramfs.bb:do_generate_initramfs) failed with
> exit code '1'
> NOTE: Tasks Summary: Attempted 38 tasks of which 27 didn't need to be
> rerun and 1 failed.
> WARNING: build/tmp/work/debian-bookworm-amd64/isar-initramfs-
> qemuamd64/1.0-r0/rootfs/isar-apt left mounted, unmounting...
> WARNING: build/tmp/work/debian-bookworm-amd64/isar-initramfs-
> qemuamd64/1.0-r0/rootfs/sys left mounted, unmounting...
> WARNING: build/tmp/work/debian-bookworm-amd64/isar-initramfs-
> qemuamd64/1.0-r0/rootfs/proc left mounted, unmounting...
> WARNING: build/tmp/work/debian-bookworm-amd64/isar-initramfs-
> qemuamd64/1.0-r0/rootfs/dev/pts left mounted, unmounting...
> WARNING: build/tmp/work/debian-bookworm-amd64/isar-initramfs-
> qemuamd64/1.0-r0/rootfs/dev/shm left mounted, unmounting...
> WARNING: build/tmp/work/debian-bookworm-amd64/isar-initramfs-
> qemuamd64/1.0-r0/rootfs/dev left mounted, unmounting...
>
> Protect mounting with a trap for cleanup in case of failure.
>
> Signed-off-by: Anton Mikanovich <ami...@ilbers.de>
> ---
>  meta/classes/initramfs.bbclass | 4 ++++
>  1 file changed, 4 insertions(+)
>
> diff --git a/meta/classes/initramfs.bbclass
> b/meta/classes/initramfs.bbclass
> index 42013356..0197a60b 100644
> --- a/meta/classes/initramfs.bbclass
> +++ b/meta/classes/initramfs.bbclass
> @@ -35,6 +35,10 @@ do_generate_initramfs[sstate-inputdirs] =
> "${DEPLOYDIR}"
>  do_generate_initramfs[sstate-outputdirs] = "${DEPLOY_DIR_IMAGE}"
>  do_generate_initramfs() {
>      rootfs_do_mounts
> +
> +    trap 'exit 1' INT HUP QUIT TERM ALRM USR1
> +    trap 'rootfs_do_umounts' EXIT
> +
>      rootfs_do_qemu
>  
>      sudo -E chroot "${INITRAMFS_ROOTFS}" sh -c '\
> --
> 2.34.1
>

Applied to next.

--
Best regards,
Uladzimir.
Reply all
Reply to author
Forward
0 new messages