From: Rob Landley <rob@landley.net>
To: Linus Torvalds <torvalds@osdl.org>
Cc: Ram Pai <linuxram@us.ibm.com>, Miklos Szeredi <miklos@szeredi.hu>,
Al Viro <viro@ftp.linux.org.uk>,
linux-kernel@vger.kernel.org, linux-fsdevel@vger.kernel.org
Subject: Re: [PATCH 12/18] shared mount handling: bind and rbind
Date: Tue, 15 Nov 2005 21:29:03 -0600 [thread overview]
Message-ID: <200511152129.04079.rob@landley.net> (raw)
In-Reply-To: <Pine.LNX.4.64.0511091054290.3247@g5.osdl.org>
On Wednesday 09 November 2005 12:59, Linus Torvalds wrote:
> > no. I said application _should_not_ depend on it, because it is a
> > undefined semantics.
>
> It's definitely neither unusual nor undefined. I do all my umounts by
> directory (in fact, doing it by anything else really _is_ badly defined,
> since a block device can be mounted in many places), and the only sane
> semantics would be to peel off the last mount on that directory.
I noticed this upgrading busybox mount a few months back. I was trying to
figure out if the correct semantics for umount /dev/block were to umount
_all_ instances of this block device, or umount just the most recent one. I
wound up just passing it through to the kernel and letting it decide, but I
wasn't sure why it did what it did.
The 2.6 multiple mount semantics are still new enough that the tools are just
now catching up. Last I checked, the standard mount was kind of unhappy with
--bind and --move mounts (they were corrupting /etc/mtab):
http://www.busybox.net/lists/busybox/2005-August/015285.html
The side effects of mount can be really non-obvious at times. For example,
while implementing busybox's switch_root I found out that this snippet of
klibc's run-init.c is slightly wrong:
if ( chdir(realroot) )
die("chdir to new root");
/* snip */
/* Overmount the root */
if ( mount(".", "/", NULL, MS_MOVE, NULL) )
die("overmounting root");
/* chroot, chdir */
if ( chroot(".") || chdir("/") )
die("chroot");
The || fallback in the third part won't work. chroot(".") will get you to the
new filesystem, but chdir("/") still gets you to the old one, even though
we've overmounted it. (I have no idea why. I assume it's because / is
special.)
Rob
next prev parent reply other threads:[~2005-11-16 3:30 UTC|newest]
Thread overview: 26+ messages / expand[flat|nested] mbox.gz Atom feed top
2005-11-08 2:01 [PATCH 12/18] shared mount handling: bind and rbind Al Viro
2005-11-08 14:11 ` Miklos Szeredi
2005-11-08 15:48 ` Ram Pai
2005-11-08 15:55 ` Miklos Szeredi
2005-11-09 18:44 ` Ram Pai
2005-11-09 18:59 ` Linus Torvalds
2005-11-09 19:26 ` Al Viro
2005-11-09 19:28 ` Ram Pai
2005-11-16 3:29 ` Rob Landley [this message]
2005-11-16 3:53 ` Linus Torvalds
2005-11-16 5:35 ` Al Boldi
2005-11-16 8:19 ` Miklos Szeredi
2005-11-16 9:10 ` Rob Landley
2005-11-16 10:14 ` Miklos Szeredi
2005-11-16 13:59 ` Shaya Potter
2005-11-16 16:35 ` Miklos Szeredi
2005-11-16 20:05 ` Al Boldi
2005-11-16 20:21 ` Shaya Potter
2005-11-16 8:47 ` Rob Landley
2005-11-16 8:41 ` Rob Landley
2005-11-16 16:18 ` Linus Torvalds
2005-11-09 10:54 ` Miklos Szeredi
2005-11-09 14:31 ` Al Viro
2005-11-09 15:22 ` Miklos Szeredi
2005-11-09 15:56 ` Al Viro
2005-11-09 16:33 ` Miklos Szeredi
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=200511152129.04079.rob@landley.net \
--to=rob@landley.net \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linuxram@us.ibm.com \
--cc=miklos@szeredi.hu \
--cc=torvalds@osdl.org \
--cc=viro@ftp.linux.org.uk \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.