From: Al Viro <viro@ZenIV.linux.org.uk>
To: "Eric W. Biederman" <ebiederm@xmission.com>
Cc: Linus Torvalds <torvalds@linux-foundation.org>,
Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
linux-fsdevel <linux-fsdevel@vger.kernel.org>,
Ian Kent <raven@themaw.net>
Subject: Re: [git pull] vfs fixes
Date: Mon, 3 Apr 2017 08:46:53 +0100 [thread overview]
Message-ID: <20170403074653.GN29622@ZenIV.linux.org.uk> (raw)
In-Reply-To: <87inmmvxlz.fsf@xmission.com>
On Mon, Apr 03, 2017 at 01:00:56AM -0500, Eric W. Biederman wrote:
> Refereshing my memory. d_automount mounts things and is what
> is used for nfs referrals. d_manage blocks waiting for
> an automounts to complete or expire. follow_down just calls d_manage,
> follow_manage calls both d_manage and d_automount as appropriate.
D'oh... Right. What's more, by that point getting back to original
state on error is needed.
> If the concern is nfs referral points calling follow_down is wrong and
> what is wanted is follow_managed.
... except that follow_managed() takes nameidata and there is no way in
hell we are letting that animal out of fs/namei.c ever again. Too low-level.
> The intent of the logic in mntns_install is to just pick a reasonable
> looking place somewhere in that mount namespace to use as a root
> directory. I arbitrarily picked the top of the mount stack on "/". Which
> is typically used as the root directory. If people really care where
> their root is they save a directory file descriptor off somewhere and
> call chroot. So there is a little wiggle room exactly what the code
> does.
Hmm... If anything, I'm tempted to add LOOKUP_DOWN that would have
path_lookupat() do
if (unlikely(flags & LOOKUP_DOWN)) {
struct path path = nd->path;
dget(nd->path.dentry);
err = follow_managed(&path, nd);
if (unlikely(err < 0))
terminate_walk(nd);
return err;
}
path_to_nameidate(&path, nd);
}
right after path_init(). Then your stuff would've turned into
get_mnt_ns(mnt_ns);
old_mnt_ns = nsproxy->mnt_ns;
nsproxy->mnt_ns = mnt_ns;
/* Find the root */
err = vfs_path_lookup(mnt_ns->root->mnt.mnt_root, &mnt_ns->root->mnt,
"/", LOOKUP_DOWN, &root);
if (err) {
/* revert to old namespace */
nsproxy->mnt_ns = old_mnt_ns;
put_mnt_ns(mnt_ns);
return err;
}
/* Update the pwd and root */
set_fs_pwd(fs, &root);
set_fs_root(fs, &root);
path_put(&root);
put_mnt_ns(old_mnt_ns);
return 0;
This is absolutely untested, and I won't get around to testing it until
tomorrow, but something along those lines would IMO be better than
exposing a trimmed-down follow_managed(), not to mention struct nameidata
itself...
next prev parent reply other threads:[~2017-04-03 7:46 UTC|newest]
Thread overview: 210+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-04-02 17:01 [git pull] vfs fixes Al Viro
2017-04-02 23:59 ` Linus Torvalds
2017-04-03 0:10 ` Linus Torvalds
2017-04-03 0:30 ` Al Viro
2017-04-03 0:43 ` Al Viro
2017-04-03 0:58 ` Linus Torvalds
2017-04-03 2:21 ` Al Viro
2017-04-03 6:00 ` Eric W. Biederman
2017-04-03 7:46 ` Al Viro [this message]
2017-04-04 0:22 ` Ian Kent
2017-04-04 0:47 ` Ian Kent
2017-04-03 0:20 ` Al Viro
-- strict thread matches above, loose matches on Subject: below --
2026-01-26 10:49 [GIT PULL] " Christian Brauner
2026-01-26 18:26 ` pr-tracker-bot
2026-01-09 10:39 Christian Brauner
2026-01-09 16:40 ` pr-tracker-bot
2025-12-05 13:36 Christian Brauner
2025-12-06 0:17 ` pr-tracker-bot
2025-12-06 0:17 ` Linus Torvalds
2025-11-28 16:46 Christian Brauner
2025-11-28 21:15 ` pr-tracker-bot
2025-11-17 15:53 Christian Brauner
2025-11-17 17:52 ` pr-tracker-bot
2025-10-15 19:34 Christian Brauner
2025-10-15 22:30 ` pr-tracker-bot
2025-09-26 10:39 Christian Brauner
2025-09-26 20:44 ` pr-tracker-bot
2025-09-08 9:45 Christian Brauner
2025-09-08 14:58 ` Linus Torvalds
2025-09-08 15:41 ` pr-tracker-bot
2025-08-19 12:46 Christian Brauner
2025-08-19 17:33 ` pr-tracker-bot
2025-07-25 8:54 Christian Brauner
2025-07-25 15:39 ` pr-tracker-bot
2025-07-19 10:59 Christian Brauner
2025-07-19 18:29 ` pr-tracker-bot
2025-07-04 8:36 Christian Brauner
2025-07-04 17:36 ` pr-tracker-bot
2025-06-16 8:20 Christian Brauner
2025-06-16 16:12 ` pr-tracker-bot
2025-06-02 9:02 Christian Brauner
2025-06-02 22:58 ` pr-tracker-bot
2025-05-23 10:26 Christian Brauner
2025-05-23 14:56 ` pr-tracker-bot
2025-05-12 11:01 Christian Brauner
2025-05-13 3:33 ` pr-tracker-bot
2025-04-25 21:22 Christian Brauner
2025-04-25 23:35 ` pr-tracker-bot
2025-04-19 21:04 Christian Brauner
2025-04-19 21:38 ` pr-tracker-bot
2025-04-14 10:44 Christian Brauner
2025-04-14 17:41 ` pr-tracker-bot
2025-04-02 15:46 Christian Brauner
2025-04-03 0:11 ` pr-tracker-bot
2025-03-20 15:22 Christian Brauner
2025-03-20 21:21 ` pr-tracker-bot
2025-03-13 9:13 Christian Brauner
2025-03-13 19:04 ` pr-tracker-bot
2025-03-06 10:13 Christian Brauner
2025-03-06 18:20 ` pr-tracker-bot
2025-02-25 11:51 Christian Brauner
2025-02-25 17:52 ` pr-tracker-bot
2025-02-17 10:37 Christian Brauner
2025-02-17 18:44 ` pr-tracker-bot
2025-02-07 10:52 Christian Brauner
2025-02-07 22:25 ` pr-tracker-bot
2025-01-10 15:16 Christian Brauner
2025-01-10 18:12 ` pr-tracker-bot
2025-01-06 15:32 Christian Brauner
2025-01-06 18:40 ` pr-tracker-bot
2024-11-27 15:41 Christian Brauner
2024-11-27 16:14 ` Linus Torvalds
2024-11-27 16:15 ` pr-tracker-bot
2024-11-01 12:43 Christian Brauner
2024-11-01 17:48 ` pr-tracker-bot
2024-10-21 11:46 Christian Brauner
2024-10-21 18:27 ` pr-tracker-bot
2024-10-03 9:00 Christian Brauner
2024-10-03 16:53 ` pr-tracker-bot
2024-09-30 13:46 Christian Brauner
2024-09-30 20:21 ` pr-tracker-bot
2024-09-04 12:03 Christian Brauner
2024-09-04 16:46 ` pr-tracker-bot
2024-08-26 15:25 Christian Brauner
2024-08-27 5:04 ` pr-tracker-bot
2024-08-14 13:29 Christian Brauner
2024-08-14 16:28 ` pr-tracker-bot
2024-07-27 9:05 Christian Brauner
2024-07-27 22:37 ` pr-tracker-bot
2024-07-24 9:19 Christian Brauner
2024-07-24 17:19 ` pr-tracker-bot
2024-07-18 9:01 Christian Brauner
2024-07-19 1:04 ` pr-tracker-bot
2024-07-11 5:09 Christian Brauner
2024-07-11 19:24 ` pr-tracker-bot
2024-07-02 19:44 Christian Brauner
2024-07-02 20:56 ` pr-tracker-bot
2024-07-01 11:53 Christian Brauner
2024-07-01 16:49 ` pr-tracker-bot
2024-06-10 14:09 Christian Brauner
2024-06-11 19:15 ` Linus Torvalds
2024-06-12 11:30 ` Christian Brauner
2024-06-11 23:42 ` pr-tracker-bot
2024-05-27 11:55 Christian Brauner
2024-05-27 15:30 ` pr-tracker-bot
2024-04-26 14:59 Christian Brauner
2024-04-26 18:09 ` pr-tracker-bot
2024-04-05 11:22 Christian Brauner
2024-04-05 17:09 ` pr-tracker-bot
2024-03-18 12:19 Christian Brauner
2024-03-18 16:48 ` pr-tracker-bot
2024-03-18 19:14 ` Linus Torvalds
2024-03-18 19:41 ` Linus Torvalds
2024-03-19 6:58 ` Christian Brauner
2024-03-20 10:21 ` Christian Brauner
2024-03-06 15:45 Christian Brauner
2024-03-06 16:33 ` pr-tracker-bot
2024-03-01 12:45 Christian Brauner
2024-03-01 20:37 ` pr-tracker-bot
2024-02-22 14:03 Christian Brauner
2024-02-22 18:18 ` pr-tracker-bot
2024-02-12 13:00 Christian Brauner
2024-02-12 17:03 ` pr-tracker-bot
2024-01-13 12:31 Christian Brauner
2024-01-17 20:03 ` pr-tracker-bot
2023-11-24 10:27 Christian Brauner
2023-11-24 18:25 ` Linus Torvalds
2023-11-24 18:52 ` Linus Torvalds
2023-11-24 20:12 ` Linus Torvalds
2023-11-25 13:05 ` Christian Brauner
2023-11-25 13:10 ` Christian Brauner
2023-11-25 13:28 ` Omar Sandoval
2023-11-25 14:04 ` Christian Brauner
2023-11-24 18:26 ` pr-tracker-bot
2023-10-19 10:07 Christian Brauner
2023-10-19 16:37 ` Linus Torvalds
2023-10-20 11:14 ` Christian Brauner
2023-10-19 18:36 ` pr-tracker-bot
2023-09-26 10:39 Christian Brauner
2023-09-26 16:14 ` pr-tracker-bot
2023-07-06 11:52 Christian Brauner
2023-07-07 2:27 ` pr-tracker-bot
2023-07-02 11:28 Christian Brauner
2023-07-02 18:53 ` pr-tracker-bot
2023-05-25 12:22 Christian Brauner
2023-05-25 18:18 ` pr-tracker-bot
2023-05-12 15:31 Christian Brauner
2023-05-12 22:14 ` pr-tracker-bot
2023-04-03 11:04 Christian Brauner
2023-04-03 16:51 ` pr-tracker-bot
2023-03-12 12:18 Christian Brauner
2023-03-12 16:20 ` pr-tracker-bot
2020-09-22 21:29 [git pull] " Al Viro
2020-09-22 22:15 ` pr-tracker-bot
[not found] <CAHk-=wgdsv1UA+QtgiJM8KQAG7N7_9iK_edchnzZYyj+nxmfLA@mail.gmail.com>
[not found] ` <20200113195448.GT8904@ZenIV.linux.org.uk>
[not found] ` <CAHk-=whn5qk-e-KnYr6HNe5hp45v+XyDbsA2+szXvK3gC06A2w@mail.gmail.com>
2020-01-15 6:41 ` Al Viro
2020-01-15 19:35 ` pr-tracker-bot
2018-07-01 12:31 Al Viro
2018-07-01 19:36 ` Linus Torvalds
2018-07-01 20:05 ` Al Viro
2018-07-01 20:25 ` Linus Torvalds
2018-04-20 15:58 Al Viro
2018-04-20 18:29 ` Andrew Morton
2018-04-20 19:09 ` Al Viro
2018-04-20 19:57 ` Andrew Morton
2017-06-17 2:56 Al Viro
2017-04-09 5:40 Al Viro
2017-04-11 6:10 ` Linus Torvalds
2017-04-11 6:48 ` Al Viro
2017-04-11 21:02 ` Andreas Dilger
2017-04-12 7:00 ` Linus Torvalds
2017-04-15 6:41 ` Vegard Nossum
2017-04-15 16:51 ` Linus Torvalds
2017-04-15 17:08 ` Al Viro
2016-06-17 20:50 Q. hlist_bl_add_head_rcu() in d_alloc_parallel() J. R. Okajima
2016-06-17 22:16 ` Al Viro
2016-06-19 5:24 ` J. R. Okajima
2016-06-19 16:55 ` Al Viro
2016-06-20 4:34 ` J. R. Okajima
2016-06-20 5:35 ` Al Viro
2016-06-20 14:51 ` Al Viro
2016-06-20 17:14 ` [git pull] vfs fixes Al Viro
2016-06-08 2:12 Al Viro
2016-05-28 0:10 Al Viro
2016-02-28 1:09 Al Viro
2014-09-14 19:47 Al Viro
2014-09-26 20:38 ` Joachim Eastwood
2014-09-26 20:46 ` Joachim Eastwood
2014-09-26 20:58 ` Al Viro
2014-09-26 21:28 ` Joachim Eastwood
2014-09-26 21:52 ` Joachim Eastwood
2014-03-24 22:58 Imre Deak
2014-03-25 7:21 ` Sedat Dilek
2014-03-23 7:16 Al Viro
2014-03-23 10:57 ` Sedat Dilek
2014-03-23 15:35 ` Al Viro
2014-03-23 16:56 ` Al Viro
2014-03-23 16:36 ` Linus Torvalds
2014-03-23 16:45 ` Al Viro
2014-03-23 17:01 ` Linus Torvalds
2014-03-24 8:52 ` Sedat Dilek
2014-03-25 0:46 ` Linus Torvalds
2014-03-26 16:36 ` Sedat Dilek
2014-03-26 20:55 ` Linus Torvalds
2014-03-27 6:14 ` Sedat Dilek
2014-03-30 20:33 ` Al Viro
2014-03-30 20:55 ` Al Viro
2014-03-30 22:39 ` Linus Torvalds
2014-03-30 23:21 ` Al Viro
2013-06-22 7:16 Al Viro
2013-03-27 0:36 Al Viro
2012-03-10 21:30 Al Viro
2012-03-10 21:49 ` Linus Torvalds
2012-03-10 22:14 ` Al Viro
2010-01-29 2:39 Al Viro
2010-01-17 7:57 Al Viro
2008-08-25 5:25 Al Viro
2008-08-25 5:29 ` Al Viro
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=20170403074653.GN29622@ZenIV.linux.org.uk \
--to=viro@zeniv.linux.org.uk \
--cc=ebiederm@xmission.com \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=raven@themaw.net \
--cc=torvalds@linux-foundation.org \
/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.