diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2009-12-17 15:51:05 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2009-12-17 15:51:05 -0500 |
commit | a2770d86b33024f71df269fde2de096df89d6a48 (patch) | |
tree | d232695efd62bcdcb2b3a9b413bccea66c0ecf32 /fs/nfs | |
parent | b8a7f3cd7e8212e5c572178ff3b5a514861036a5 (diff) |
Revert "fix mismerge with Trond's stuff (create_mnt_ns() export is gone now)"
This reverts commit e9496ff46a20a8592fdc7bdaaf41b45eb808d310. Quoth Al:
"it's dependent on a lot of other stuff not currently in mainline
and badly broken with current fs/namespace.c. Sorry, badly
out-of-order cherry-pick from old queue.
PS: there's a large pending series reworking the refcounting and
lifetime rules for vfsmounts that will, among other things, allow to
rip a subtree away _without_ dissolving connections in it, to be
garbage-collected when all active references are gone. It's
considerably saner wrt "is the subtree busy" logics, but it's nowhere
near being ready for merge at the moment; this changeset is one of the
things becoming possible with that sucker, but it certainly shouldn't
have been picked during this cycle. My apologies..."
Noticed-by: Eric Paris <eparis@redhat.com>
Requested-by: Al Viro <viro@ZenIV.linux.org.uk>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'fs/nfs')
-rw-r--r-- | fs/nfs/super.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/fs/nfs/super.c b/fs/nfs/super.c index d5b112bcf3de..ce907efc5508 100644 --- a/fs/nfs/super.c +++ b/fs/nfs/super.c | |||
@@ -2648,13 +2648,21 @@ out_freepage: | |||
2648 | static int nfs_follow_remote_path(struct vfsmount *root_mnt, | 2648 | static int nfs_follow_remote_path(struct vfsmount *root_mnt, |
2649 | const char *export_path, struct vfsmount *mnt_target) | 2649 | const char *export_path, struct vfsmount *mnt_target) |
2650 | { | 2650 | { |
2651 | struct mnt_namespace *ns_private; | ||
2651 | struct nameidata nd; | 2652 | struct nameidata nd; |
2652 | struct super_block *s; | 2653 | struct super_block *s; |
2653 | int ret; | 2654 | int ret; |
2654 | 2655 | ||
2656 | ns_private = create_mnt_ns(root_mnt); | ||
2657 | ret = PTR_ERR(ns_private); | ||
2658 | if (IS_ERR(ns_private)) | ||
2659 | goto out_mntput; | ||
2660 | |||
2655 | ret = vfs_path_lookup(root_mnt->mnt_root, root_mnt, | 2661 | ret = vfs_path_lookup(root_mnt->mnt_root, root_mnt, |
2656 | export_path, LOOKUP_FOLLOW, &nd); | 2662 | export_path, LOOKUP_FOLLOW, &nd); |
2657 | 2663 | ||
2664 | put_mnt_ns(ns_private); | ||
2665 | |||
2658 | if (ret != 0) | 2666 | if (ret != 0) |
2659 | goto out_err; | 2667 | goto out_err; |
2660 | 2668 | ||