From 5cb334c4dcd08e43b083fb32049630b023aab3c9 Mon Sep 17 00:00:00 2001 From: Erez_Zadok Date: Sun, 29 Apr 2007 19:33:25 -0400 Subject: [PATCH] fsstack: 4th case to do_path_lookup Signed-off-by: Josef 'Jeff' Sipek --- fs/namei.c | 4 ++++ include/linux/namei.h | 2 ++ 2 files changed, 6 insertions(+) diff --git a/fs/namei.c b/fs/namei.c index 17a1bbb15829..44b887c4e972 100644 --- a/fs/namei.c +++ b/fs/namei.c @@ -1126,6 +1126,10 @@ static int fastcall do_path_lookup(int dfd, const char *name, nd->mnt = mntget(fs->rootmnt); nd->dentry = dget(fs->root); read_unlock(&fs->lock); + } else if (flags & LOOKUP_ONE) { + /* nd->mnt and nd->dentry already set, just grab references */ + mntget(nd->mnt); + dget(nd->dentry); } else if (dfd == AT_FDCWD) { read_lock(&fs->lock); nd->mnt = mntget(fs->pwdmnt); diff --git a/include/linux/namei.h b/include/linux/namei.h index e378e1fef3f7..6e14b4508e8c 100644 --- a/include/linux/namei.h +++ b/include/linux/namei.h @@ -48,6 +48,7 @@ enum {LAST_NORM, LAST_ROOT, LAST_DOT, LAST_DOTDOT, LAST_BIND}; * - internal "there are more path compnents" flag * - locked when lookup done with dcache_lock held * - dentry cache is untrusted; force a real lookup + * - lookup path from given dentry/vfsmount pair */ #define LOOKUP_FOLLOW 1 #define LOOKUP_DIRECTORY 2 @@ -55,6 +56,7 @@ enum {LAST_NORM, LAST_ROOT, LAST_DOT, LAST_DOTDOT, LAST_BIND}; #define LOOKUP_PARENT 16 #define LOOKUP_NOALT 32 #define LOOKUP_REVAL 64 +#define LOOKUP_ONE 128 /* * Intent data */ -- 2.43.0