[LTP] [PATCH] unshare01.sh: Setup parent mount flag before unshare testing

zhaogongyi zhaogongyi@huawei.com
Thu Feb 25 10:38:20 CET 2021


Hi Petr,

> Do I understand correctly that all distros without systemd are affected,
> because systemd "automatically remounts all mount points as MS_SHARED
> on system startup" and test expect it?

Yes, the test on system without systemd would be affected.

> Also your patch breaks bind test on very old systems (kernel 2.6, util-linux
> 2.17.2, glibc 2.12):
> unshare01 5 TFAIL: unshare --mount mount --bind dir_A dir_B got bind
> info
> 
> Any idea why (how to avoid this regression)?

I don't known the reason now, maybe relevant to the version of kernel or util-linux. It's need to check.

---------------------------------------------------------------------------------------------------------

> 
> Hi,
> 
> > We need setup parent mount flag to shared before unshare testing, or
> > it will fail for system which has no systemd service since the
> > propagation flag is changed by systemd. From man 7
> mount_namespaces.
> Do I understand correctly that all distros without systemd are affected,
> because systemd "automatically remounts all mount points as MS_SHARED
> on system startup" and test expect it?
> 
> > Signed-off-by: Zhao Gongyi <zhaogongyi@huawei.com>
> > ---
> >  testcases/commands/unshare/unshare01.sh | 9 ++++++++-
> >  1 file changed, 8 insertions(+), 1 deletion(-)
> 
> > diff --git a/testcases/commands/unshare/unshare01.sh
> > b/testcases/commands/unshare/unshare01.sh
> > index bf163a7f4..e1fb15035 100755
> > --- a/testcases/commands/unshare/unshare01.sh
> > +++ b/testcases/commands/unshare/unshare01.sh
> > @@ -31,7 +31,6 @@ TST_SETUP=setup
> >  TST_CLEANUP=cleanup
> >  TST_TESTFUNC=do_test
> >  TST_NEEDS_ROOT=1
> > -TST_NEEDS_TMPDIR=1
> You still need TST_NEEDS_TMPDIR=1, because you create files and
> directories.
> 
> Also your patch breaks bind test on very old systems (kernel 2.6, util-linux
> 2.17.2, glibc 2.12):
> unshare01 5 TFAIL: unshare --mount mount --bind dir_A dir_B got bind
> info
> 
> Any idea why (how to avoid this regression)?
> 
> >  TST_NEEDS_CMDS="unshare id mount umount"
> >  . tst_test.sh
> 
> > @@ -39,6 +38,7 @@
> max_userns_path="/proc/sys/user/max_user_namespaces"
> >  max_mntns_path="/proc/sys/user/max_mnt_namespaces"
> >  default_max_userns=-1
> >  default_max_mntns=-1
> > +CURR=$(pwd)
> Instead of $CURR, cd - can be used.
> 
> >  setup()
> >  {
> > @@ -55,6 +55,10 @@ setup()
> >  		echo 1024 > "${max_mntns_path}"
> >  	fi
> 
> > +	mkdir $CURR/dir_C
> just mkdir dir_C
> > +	mount -t tmpfs none dir_C
> > +	mount --make-shared dir_C
> FYI We have tst_mount, but it'd not help much here.
> 
> > +	cd dir_C
> >  	mkdir -p dir_A dir_B
> >  	touch dir_A/A dir_B/B
> >  }
> > @@ -66,6 +70,9 @@ cleanup()
> >  		echo ${default_max_userns} > "${max_userns_path}"
> >  	[ ${default_max_mntns} -ne -1 ] && \
> >  		echo ${default_max_mntns} > "${max_mntns_path}"
> > +	cd $CURR
> > +	umount dir_C
> tst_umount dir_C
> 
> > +	rm -rf dir_C
> rm is not needed (cleanup is done automatically).
> >  }
> 
> >  check_id()
> 
> Full diff of changes I propose below.
> 
> Kind regards,
> Petr
> 
> diff --git testcases/commands/unshare/unshare01.sh
> testcases/commands/unshare/unshare01.sh
> index e1fb15035..0b5c56811 100755
> --- testcases/commands/unshare/unshare01.sh
> +++ testcases/commands/unshare/unshare01.sh
> @@ -31,6 +31,7 @@ TST_SETUP=setup
>  TST_CLEANUP=cleanup
>  TST_TESTFUNC=do_test
>  TST_NEEDS_ROOT=1
> +TST_NEEDS_TMPDIR=1
>  TST_NEEDS_CMDS="unshare id mount umount"
>  . tst_test.sh
> 
> @@ -38,7 +39,6 @@
> max_userns_path="/proc/sys/user/max_user_namespaces"
>  max_mntns_path="/proc/sys/user/max_mnt_namespaces"
>  default_max_userns=-1
>  default_max_mntns=-1
> -CURR=$(pwd)
> 
>  setup()
>  {
> @@ -55,7 +55,7 @@ setup()
>  		echo 1024 > "${max_mntns_path}"
>  	fi
> 
> -	mkdir $CURR/dir_C
> +	mkdir dir_C
>  	mount -t tmpfs none dir_C
>  	mount --make-shared dir_C
>  	cd dir_C
> @@ -70,9 +70,8 @@ cleanup()
>  		echo ${default_max_userns} > "${max_userns_path}"
>  	[ ${default_max_mntns} -ne -1 ] && \
>  		echo ${default_max_mntns} > "${max_mntns_path}"
> -	cd $CURR
> -	umount dir_C
> -	rm -rf dir_C
> +	cd - >/dev/null
> +	tst_umount dir_C
>  }
> 
>  check_id()


More information about the ltp mailing list