From mboxrd@z Thu Jan 1 00:00:00 1970 From: ebiederm@xmission.com (Eric W. Biederman) Subject: Re: [RFC][PATCH 2/3] vfs: Add a function to lazily unmount all mounts from any dentry. Date: Sun, 06 Oct 2013 23:15:08 -0700 Message-ID: <87y5658v4j.fsf@xmission.com> References: <87a9kkax0j.fsf@xmission.com> <8761v7h2pt.fsf@tw-ebiederman.twitter.com> <87li281wx6.fsf_-_@xmission.com> <87a9io1wu1.fsf_-_@xmission.com> <20131007042225.GA10284@mail.hallyn.com> Mime-Version: 1.0 Content-Type: text/plain Cc: Miklos Szeredi , Al Viro , Linux-Fsdevel , Kernel Mailing List , Andy Lutomirski , Rob Landley , Linus Torvalds To: "Serge E. Hallyn" Return-path: In-Reply-To: <20131007042225.GA10284@mail.hallyn.com> (Serge E. Hallyn's message of "Mon, 7 Oct 2013 04:22:26 +0000") Sender: linux-kernel-owner@vger.kernel.org List-Id: linux-fsdevel.vger.kernel.org "Serge E. Hallyn" writes: > Quoting Eric W. Biederman (ebiederm@xmission.com): >> >> Signed-off-by: Eric W. Biederman >> --- >> fs/mount.h | 1 + >> fs/namespace.c | 24 ++++++++++++++++++++++++ >> 2 files changed, 25 insertions(+), 0 deletions(-) >> >> diff --git a/fs/mount.h b/fs/mount.h >> index e4342b8dfab1..7a6a2bb3f290 100644 >> --- a/fs/mount.h >> +++ b/fs/mount.h >> @@ -79,6 +79,7 @@ static inline int is_mounted(struct vfsmount *mnt) >> } >> >> extern struct mount *__lookup_mnt(struct vfsmount *, struct dentry *, int); >> +extern void detach_mounts(struct dentry *dentry); >> >> static inline void get_mnt_ns(struct mnt_namespace *ns) >> { >> diff --git a/fs/namespace.c b/fs/namespace.c >> index d092964fe7f9..8eaee0c14fdb 100644 >> --- a/fs/namespace.c >> +++ b/fs/namespace.c >> @@ -1294,6 +1294,30 @@ static int do_umount(struct mount *mnt, int flags) >> return retval; >> } >> >> +void detach_mounts(struct dentry *dentry) >> +{ >> + struct mount *mnt, *next; >> + struct mountpoint *mp; >> + >> + namespace_lock(); >> + if (!d_mountpoint(dentry)) { >> + namespace_unlock(); >> + return; >> + } >> + mp = new_mountpoint(dentry); >> + if (IS_ERR(mp)) { > > namespace_unlock(); Good catch. Thank you. Eric