commit 71772aa396265150261a462d5adf339b98a3839e
Author: Erez_Zadok <[EMAIL PROTECTED]>
Date:   Mon Apr 30 16:53:50 2007 -0400

    fsstack: 4th case to do_path_lookup
    
    Signed-off-by: Josef 'Jeff' Sipek <[EMAIL PROTECTED]>

diff --git a/fs/namei.c b/fs/namei.c
index dd809d7..2943031 100644
--- a/fs/namei.c
+++ b/fs/namei.c
@@ -1141,6 +1141,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 93a1c36..a42873a 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
  */
_______________________________________________
unionfs-cvs mailing list: http://unionfs.filesystems.org/
[email protected]
http://www.fsl.cs.sunysb.edu/mailman/listinfo/unionfs-cvs

Reply via email to