lkml.org 
[lkml]   [2007]   [May]   [6]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 1/5] fs: Introduce vfs_path_lookup
    Date
    Signed-off-by: Josef 'Jeff' Sipek <jsipek@cs.sunysb.edu>
    ---
    fs/namei.c | 32 ++++++++++++++++++++++++++++++++
    include/linux/namei.h | 2 ++
    2 files changed, 34 insertions(+), 0 deletions(-)

    diff --git a/fs/namei.c b/fs/namei.c
    index 3449e0a..090cce4 100644
    --- a/fs/namei.c
    +++ b/fs/namei.c
    @@ -1175,6 +1175,37 @@ int fastcall path_lookup(const char *name, unsigned int flags,
    return do_path_lookup(AT_FDCWD, name, flags, nd);
    }

    +/**
    + * vfs_path_lookup - lookup a file path relative to a dentry-vfsmount pair
    + * @dentry: pointer to dentry of the base directory
    + * @mnt: pointer to vfs mount of the base directory
    + * @name: pointer to file name
    + * @flags: lookup flags
    + * @nd: pointer to nameidata
    + */
    +int vfs_path_lookup(struct dentry *dentry, struct vfsmount *mnt,
    + const char *name, unsigned int flags,
    + struct nameidata *nd)
    +{
    + int retval;
    +
    + /* same as do_path_lookup */
    + nd->last_type = LAST_ROOT;
    + nd->flags = flags;
    + nd->depth = 0;
    +
    + nd->mnt = mntget(mnt);
    + nd->dentry = dget(dentry);
    +
    + retval = path_walk(name, nd);
    + if (unlikely(!retval && !audit_dummy_context() && nd->dentry &&
    + nd->dentry->d_inode))
    + audit_inode(name, nd->dentry->d_inode);
    +
    + return retval;
    +
    +}
    +
    static int __path_lookup_intent_open(int dfd, const char *name,
    unsigned int lookup_flags, struct nameidata *nd,
    int open_flags, int create_mode)
    @@ -2799,6 +2830,7 @@ EXPORT_SYMBOL(__page_symlink);
    EXPORT_SYMBOL(page_symlink);
    EXPORT_SYMBOL(page_symlink_inode_operations);
    EXPORT_SYMBOL(path_lookup);
    +EXPORT_SYMBOL(vfs_path_lookup);
    EXPORT_SYMBOL(path_release);
    EXPORT_SYMBOL(path_walk);
    EXPORT_SYMBOL(permission);
    diff --git a/include/linux/namei.h b/include/linux/namei.h
    index 0ab27ba..4718788 100644
    --- a/include/linux/namei.h
    +++ b/include/linux/namei.h
    @@ -70,6 +70,8 @@ extern int FASTCALL(__user_walk_fd(int dfd, const char __user *, unsigned, struc
    #define user_path_walk_link(name,nd) \
    __user_walk_fd(AT_FDCWD, name, 0, nd)
    extern int FASTCALL(path_lookup(const char *, unsigned, struct nameidata *));
    +extern int vfs_path_lookup(struct dentry *, struct vfsmount *,
    + const char *, unsigned int, struct nameidata *);
    extern int FASTCALL(path_walk(const char *, struct nameidata *));
    extern int FASTCALL(link_path_walk(const char *, struct nameidata *));
    extern void path_release(struct nameidata *);
    --
    1.5.2.rc1.20.g86b9
    -
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

    \
     
     \ /
      Last update: 2007-05-06 19:45    [W:0.024 / U:30.800 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site