Re: Mount propagation issue

From: Eric W. Biederman
Date: Mon Sep 29 2014 - 19:31:04 EST


Ross Lagerwall <rosslagerwall@xxxxxxxxx> writes:

> Hi,
>
> I have encountered a strange bug (on 3.14, 3.16.3 and master) regarding
> mount namespaces and a particular directory. Somehow, mounts are being
> mounted successfully but disappearing when the process dies, but only
> for /mnt/puppy, not for any other directory in the system:
>
> # grep puppy /proc/mounts # nothing mounted yet
> # mount -t tmpfs tmpfs /mnt/puppy
> # grep puppy /proc/mounts # no output
>
> # mount -t tmpfs tmpfs /mnt/puppy2
> # grep puppy /proc/mounts
> tmpfs /mnt/puppy2 tmpfs rw,relatime 0 0
>
> Furthermore, I wrote a program to mount /mnt/puppy and immediately
> read /proc/mounts:
> # grep puppy /proc/mounts # no output
> # ./mounter
> tmpfs /mnt/puppy tmpfs rw,relatime 0 0
> # grep puppy /proc/mounts # no output
>
> Finally, I note that the problem seems to occur if the mount needs to be
> propagated to the default namespace (note that systemd causes namespaces
> to be shared by default):
> # unshare -m
>
> subshell # mount -t tmpfs tmpfs /mnt/puppy
> subshell # grep puppy /proc/mounts # no output
> subshell # mount --make-rprivate /
> subshell # mount -t tmpfs tmpfs /mnt/puppy
> subshell # grep puppy /proc/mounts # success!
> tmpfs /mnt/puppy tmpfs rw,relatime 0 0
> subshell # umount /mnt/puppy
> subshell # exit
>
> # mount --make-rprivate / # back in the default namespace
> # mount -t tmpfs tmpfs /mnt/puppy
> # grep puppy /proc/mounts # no output
>
> I hope someone has an idea of what's going on or how to debug this
> because I've run out of ideas...

My guess is that some process (systemd?) is configured to unmount that
directory if anything shows up mounted on it. So when the mount
propogates it gets unmounted and then the unmount propogates as well.

Eric

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/