avoid double slash in generated rootfs umount paths

Message ID 20260911101616.748091-1-srinuvasan.a@siemens.com
State Under Review
Headers show
Series avoid double slash in generated rootfs umount paths | expand

Commit Message

Srinuvasan Arjunan Sept. 11, 2026, 10:16 a.m. UTC
From: Srinuvasan A <srinuvasan.a@siemens.com>

ROOTFS_MOUNTS inner paths are absolute, e.g. /isar-apt and
/isar-work. insert_isar_umounts added another slash between ROOTFSDIR
and the inner path, producing paths like rootfs//isar-apt in the
expanded rootfs_do_umounts_priv task.

Strip the leading slash from the inner mount path when building the
mountpoint, matching the logic already used by insert_isar_mounts.

Logs:
mountpoint -q /work/build/tmp/work/debian-trixie-amd64/isar-image-base-qemuamd64/1.0-r0/rootfs//isar-apt &&
 umount /work/build/tmp/work/debian-trixie-amd64/isar-image-base-qemuamd64/1.0-r0/rootfs//isar-apt

mountpoint -q /work/build/tmp/work/debian-trixie-amd64/isar-image-base-qemuamd64/1.0-r0/rootfs//isar-work &&
 umount /work/build/tmp/work/debian-trixie-amd64/isar-image-base-qemuamd64/1.0-r0/rootfs//isar-work

Signed-off-by: Srinuvasan A <srinuvasan.a@siemens.com>
---
 meta/classes-global/base.bbclass | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Felix Moessbauer Sept. 11, 2026, 10:41 a.m. UTC | #1
On Fri, 2026-09-11 at 15:46 +0530, srinuvasan.a via isar-users wrote:
> From: Srinuvasan A <srinuvasan.a@siemens.com>
> 
> ROOTFS_MOUNTS inner paths are absolute, e.g. /isar-apt and
> /isar-work. insert_isar_umounts added another slash between ROOTFSDIR
> and the inner path, producing paths like rootfs//isar-apt in the
> expanded rootfs_do_umounts_priv task.
> 
> Strip the leading slash from the inner mount path when building the
> mountpoint, matching the logic already used by insert_isar_mounts.

Thanks!

Reviewed-by: Felix Moessbauer <felix.moessbauer@siemens.com>

> 
> Logs:
> mountpoint -q /work/build/tmp/work/debian-trixie-amd64/isar-image-base-qemuamd64/1.0-r0/rootfs//isar-apt &&
>  umount /work/build/tmp/work/debian-trixie-amd64/isar-image-base-qemuamd64/1.0-r0/rootfs//isar-apt
> 
> mountpoint -q /work/build/tmp/work/debian-trixie-amd64/isar-image-base-qemuamd64/1.0-r0/rootfs//isar-work &&
>  umount /work/build/tmp/work/debian-trixie-amd64/isar-image-base-qemuamd64/1.0-r0/rootfs//isar-work
> 
> Signed-off-by: Srinuvasan A <srinuvasan.a@siemens.com>
> ---
>  meta/classes-global/base.bbclass | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/meta/classes-global/base.bbclass b/meta/classes-global/base.bbclass
> index 8f81ab70..be663fe7 100644
> --- a/meta/classes-global/base.bbclass
> +++ b/meta/classes-global/base.bbclass
> @@ -432,7 +432,7 @@ def insert_isar_umounts(d, rootfs, mounts):
>  
>      for m in mounts.split():
>          host, inner = m.split(':') if ':' in m else (m, m)
> -        mp = '{}/{}'.format(rootfs, inner)
> +        mp = '{}/{}'.format(rootfs, inner[1:])
>          lines.append('mountpoint -q {} && umount {}'.format(mp, mp))
>          lines.append('[ -d {} ] && rmdir --ignore-fail-on-non-empty {}'.format(mp, mp))
>      return '\n'.join(lines)
> -- 
> 2.39.5
> 
> -- 
> You received this message because you are subscribed to the Google Groups "isar-users" group.
> To unsubscribe from this group and stop receiving emails from it, send an email to isar-users+unsubscribe@googlegroups.com.
> To view this discussion visit https://groups.google.com/d/msgid/isar-users/20260911101616.748091-1-srinuvasan.a%40siemens.com.
Jan Kiszka Sept. 11, 2026, 10:49 a.m. UTC | #2
On 11.09.26 12:16, srinuvasan.a via isar-users wrote:
> From: Srinuvasan A <srinuvasan.a@siemens.com>
> 
> ROOTFS_MOUNTS inner paths are absolute, e.g. /isar-apt and
> /isar-work. insert_isar_umounts added another slash between ROOTFSDIR
> and the inner path, producing paths like rootfs//isar-apt in the
> expanded rootfs_do_umounts_priv task.
> 
> Strip the leading slash from the inner mount path when building the
> mountpoint, matching the logic already used by insert_isar_mounts.
> 
> Logs:
> mountpoint -q /work/build/tmp/work/debian-trixie-amd64/isar-image-base-qemuamd64/1.0-r0/rootfs//isar-apt &&
>  umount /work/build/tmp/work/debian-trixie-amd64/isar-image-base-qemuamd64/1.0-r0/rootfs//isar-apt
> 
> mountpoint -q /work/build/tmp/work/debian-trixie-amd64/isar-image-base-qemuamd64/1.0-r0/rootfs//isar-work &&
>  umount /work/build/tmp/work/debian-trixie-amd64/isar-image-base-qemuamd64/1.0-r0/rootfs//isar-work
> 
> Signed-off-by: Srinuvasan A <srinuvasan.a@siemens.com>
> ---
>  meta/classes-global/base.bbclass | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/meta/classes-global/base.bbclass b/meta/classes-global/base.bbclass
> index 8f81ab70..be663fe7 100644
> --- a/meta/classes-global/base.bbclass
> +++ b/meta/classes-global/base.bbclass
> @@ -432,7 +432,7 @@ def insert_isar_umounts(d, rootfs, mounts):
>  
>      for m in mounts.split():
>          host, inner = m.split(':') if ':' in m else (m, m)
> -        mp = '{}/{}'.format(rootfs, inner)
> +        mp = '{}/{}'.format(rootfs, inner[1:])

This looks fragile. Why not strip off '/', rather than blindly cutting
the last char?

Jan

>          lines.append('mountpoint -q {} && umount {}'.format(mp, mp))
>          lines.append('[ -d {} ] && rmdir --ignore-fail-on-non-empty {}'.format(mp, mp))
>      return '\n'.join(lines)
Srinuvasan Arjunan Sept. 11, 2026, 11:12 a.m. UTC | #3
On Friday, September 11, 2026 at 4:19:31 PM UTC+5:30 Jan Kiszka wrote:

On 11.09.26 12:16, srinuvasan.a via isar-users wrote: 
> From: Srinuvasan A <srinuv...@siemens.com> 
> 
> ROOTFS_MOUNTS inner paths are absolute, e.g. /isar-apt and 
> /isar-work. insert_isar_umounts added another slash between ROOTFSDIR 
> and the inner path, producing paths like rootfs//isar-apt in the 
> expanded rootfs_do_umounts_priv task. 
> 
> Strip the leading slash from the inner mount path when building the 
> mountpoint, matching the logic already used by insert_isar_mounts. 
> 
> Logs: 
> mountpoint -q 
/work/build/tmp/work/debian-trixie-amd64/isar-image-base-qemuamd64/1.0-r0/rootfs//isar-apt 
&& 
> umount 
/work/build/tmp/work/debian-trixie-amd64/isar-image-base-qemuamd64/1.0-r0/rootfs//isar-apt 

> 
> mountpoint -q 
/work/build/tmp/work/debian-trixie-amd64/isar-image-base-qemuamd64/1.0-r0/rootfs//isar-work 
&& 
> umount 
/work/build/tmp/work/debian-trixie-amd64/isar-image-base-qemuamd64/1.0-r0/rootfs//isar-work 

> 
> Signed-off-by: Srinuvasan A <srinuv...@siemens.com> 
> --- 
> meta/classes-global/base.bbclass | 2 +- 
> 1 file changed, 1 insertion(+), 1 deletion(-) 
> 
> diff --git a/meta/classes-global/base.bbclass 
b/meta/classes-global/base.bbclass 
> index 8f81ab70..be663fe7 100644 
> --- a/meta/classes-global/base.bbclass 
> +++ b/meta/classes-global/base.bbclass 
> @@ -432,7 +432,7 @@ def insert_isar_umounts(d, rootfs, mounts): 
> 
> for m in mounts.split(): 
> host, inner = m.split(':') if ':' in m else (m, m) 
> - mp = '{}/{}'.format(rootfs, inner) 
> + mp = '{}/{}'.format(rootfs, inner[1:]) 

This looks fragile. Why not strip off '/', rather than blindly cutting 
the last char? 

Jan


  Thanks for the comments,

  Here, inner[1:] strips the leading /, as we always assume the paths in 
ROOTFS_MOUNTS are absolute.

  For example:
  ROOTFS_MOUNTS ??= "${REPO_ISAR_DIR}/${DISTRO}:/isar-apt 
${WORKDIR}:/isar-work"

  This also follows the same pattern already used by insert_isar_mounts.

  Many thanks,

  Srinu



> lines.append('mountpoint -q {} && umount {}'.format(mp, mp)) 
> lines.append('[ -d {} ] && rmdir --ignore-fail-on-non-empty 
{}'.format(mp, mp)) 
> return '\n'.join(lines)
Jan Kiszka Sept. 11, 2026, 11:20 a.m. UTC | #4
On 11.09.26 13:12, 'Srinuvasan Arjunan' via isar-users wrote:
> 
> 
> On Friday, September 11, 2026 at 4:19:31 PM UTC+5:30 Jan Kiszka wrote:
> 
>     On 11.09.26 12:16, srinuvasan.a via isar-users wrote:
>     > From: Srinuvasan A <srinuv...@siemens.com>
>     >
>     > ROOTFS_MOUNTS inner paths are absolute, e.g. /isar-apt and
>     > /isar-work. insert_isar_umounts added another slash between ROOTFSDIR
>     > and the inner path, producing paths like rootfs//isar-apt in the
>     > expanded rootfs_do_umounts_priv task.
>     >
>     > Strip the leading slash from the inner mount path when building the
>     > mountpoint, matching the logic already used by insert_isar_mounts.
>     >
>     > Logs:
>     > mountpoint -q /work/build/tmp/work/debian-trixie-amd64/isar-image-
>     base-qemuamd64/1.0-r0/rootfs//isar-apt &&
>     > umount /work/build/tmp/work/debian-trixie-amd64/isar-image-base-
>     qemuamd64/1.0-r0/rootfs//isar-apt
>     >
>     > mountpoint -q /work/build/tmp/work/debian-trixie-amd64/isar-image-
>     base-qemuamd64/1.0-r0/rootfs//isar-work &&
>     > umount /work/build/tmp/work/debian-trixie-amd64/isar-image-base-
>     qemuamd64/1.0-r0/rootfs//isar-work
>     >
>     > Signed-off-by: Srinuvasan A <srinuv...@siemens.com>
>     > ---
>     > meta/classes-global/base.bbclass | 2 +-
>     > 1 file changed, 1 insertion(+), 1 deletion(-)
>     >
>     > diff --git a/meta/classes-global/base.bbclass b/meta/classes-
>     global/base.bbclass
>     > index 8f81ab70..be663fe7 100644
>     > --- a/meta/classes-global/base.bbclass
>     > +++ b/meta/classes-global/base.bbclass
>     > @@ -432,7 +432,7 @@ def insert_isar_umounts(d, rootfs, mounts):
>     >
>     > for m in mounts.split():
>     > host, inner = m.split(':') if ':' in m else (m, m)
>     > - mp = '{}/{}'.format(rootfs, inner)
>     > + mp = '{}/{}'.format(rootfs, inner[1:])
> 
>     This looks fragile. Why not strip off '/', rather than blindly cutting
>     the last char?
> 
>     Jan
> 
> 
>   Thanks for the comments,
> 
>   Here, inner[1:] strips the leading /, as we always assume the paths in
> ROOTFS_MOUNTS are absolute.

Yeah, confused that.

> 
>   For example:
> 
>   ROOTFS_MOUNTS ??= "${REPO_ISAR_DIR}/${DISTRO}:/isar-apt ${WORKDIR}:/
> isar-work"
> 
>   This also follows the same pattern already used by insert_isar_mounts.
> 

It would still be clearer, not requiring a (missing) comment or reading
the commit message to understand what is cut off here. And maybe other
code would benefit from a clearer pattern as well.

Jan

Patch

diff --git a/meta/classes-global/base.bbclass b/meta/classes-global/base.bbclass
index 8f81ab70..be663fe7 100644
--- a/meta/classes-global/base.bbclass
+++ b/meta/classes-global/base.bbclass
@@ -432,7 +432,7 @@  def insert_isar_umounts(d, rootfs, mounts):
 
     for m in mounts.split():
         host, inner = m.split(':') if ':' in m else (m, m)
-        mp = '{}/{}'.format(rootfs, inner)
+        mp = '{}/{}'.format(rootfs, inner[1:])
         lines.append('mountpoint -q {} && umount {}'.format(mp, mp))
         lines.append('[ -d {} ] && rmdir --ignore-fail-on-non-empty {}'.format(mp, mp))
     return '\n'.join(lines)