VFS/Unionfs: use generic path_get/path_put functions
authorErez Zadok <ezk@cs.sunysb.edu>
Fri, 15 Feb 2008 23:42:43 +0000 (18:42 -0500)
committerErez Zadok <ezk@cs.sunysb.edu>
Fri, 12 Aug 2011 02:37:43 +0000 (22:37 -0400)
Remove unionfs's versions thereof.

Signed-off-by: Erez Zadok <ezk@cs.sunysb.edu>
fs/unionfs/main.c
fs/unionfs/super.c
include/linux/namei.h

index 3585b29388c27d1c050e5582020496e45f7006c7..8f59fb523545b897ef338d1df8a92a4a56a325e7 100644 (file)
@@ -230,11 +230,11 @@ void unionfs_reinterpose(struct dentry *dentry)
 int check_branch(struct nameidata *nd)
 {
        /* XXX: remove in ODF code -- stacking unions allowed there */
-       if (!strcmp(nd->dentry->d_sb->s_type->name, UNIONFS_NAME))
+       if (!strcmp(nd->path.dentry->d_sb->s_type->name, UNIONFS_NAME))
                return -EINVAL;
-       if (!nd->dentry->d_inode)
+       if (!nd->path.dentry->d_inode)
                return -ENOENT;
-       if (!S_ISDIR(nd->dentry->d_inode->i_mode))
+       if (!S_ISDIR(nd->path.dentry->d_inode->i_mode))
                return -ENOTDIR;
        return 0;
 }
@@ -375,8 +375,8 @@ static int parse_dirs_option(struct super_block *sb, struct unionfs_dentry_info
                        goto out;
                }
 
-               lower_root_info->lower_paths[bindex].dentry = nd.dentry;
-               lower_root_info->lower_paths[bindex].mnt = nd.mnt;
+               lower_root_info->lower_paths[bindex].dentry = nd.path.dentry;
+               lower_root_info->lower_paths[bindex].mnt = nd.path.mnt;
 
                set_branchperms(sb, bindex, perms);
                set_branch_count(sb, bindex, 0);
index 773623e48c850c164d426d87f4af4860922a66c9..fba159804810dfd8562affcead7e0c161ff77135 100644 (file)
@@ -231,8 +231,8 @@ static noinline int do_remount_mode_option(char *optarg, int cur_branches,
                goto out;
        }
        for (idx = 0; idx < cur_branches; idx++)
-               if (nd.mnt == new_lower_paths[idx].mnt &&
-                   nd.dentry == new_lower_paths[idx].dentry)
+               if (nd.path.mnt == new_lower_paths[idx].mnt &&
+                   nd.path.dentry == new_lower_paths[idx].dentry)
                        break;
        path_put(&nd.path);     /* no longer needed */
        if (idx == cur_branches) {
@@ -274,8 +274,8 @@ static noinline int do_remount_del_option(char *optarg, int cur_branches,
                goto out;
        }
        for (idx = 0; idx < cur_branches; idx++)
-               if (nd.mnt == new_lower_paths[idx].mnt &&
-                   nd.dentry == new_lower_paths[idx].dentry)
+               if (nd.path.mnt == new_lower_paths[idx].mnt &&
+                   nd.path.dentry == new_lower_paths[idx].dentry)
                        break;
        path_put(&nd.path);     /* no longer needed */
        if (idx == cur_branches) {
@@ -358,8 +358,8 @@ static noinline int do_remount_add_option(char *optarg, int cur_branches,
                goto out;
        }
        for (idx = 0; idx < cur_branches; idx++)
-               if (nd.mnt == new_lower_paths[idx].mnt &&
-                   nd.dentry == new_lower_paths[idx].dentry)
+               if (nd.path.mnt == new_lower_paths[idx].mnt &&
+                   nd.path.dentry == new_lower_paths[idx].dentry)
                        break;
        path_put(&nd.path);     /* no longer needed */
        if (idx == cur_branches) {
@@ -425,10 +425,10 @@ found_insertion_point:
                memmove(&new_lower_paths[idx+1], &new_lower_paths[idx],
                        (cur_branches - idx) * sizeof(struct path));
        }
-       new_lower_paths[idx].dentry = nd.dentry;
-       new_lower_paths[idx].mnt = nd.mnt;
+       new_lower_paths[idx].dentry = nd.path.dentry;
+       new_lower_paths[idx].mnt = nd.path.mnt;
 
-       new_data[idx].sb = nd.dentry->d_sb;
+       new_data[idx].sb = nd.path.dentry->d_sb;
        atomic_set(&new_data[idx].open_files, 0);
        new_data[idx].branchperms = perms;
        new_data[idx].branch_id = ++*high_branch_id; /* assign new branch ID */
@@ -577,7 +577,7 @@ static int unionfs_remount_fs(struct super_block *sb, int *flags,
        memcpy(tmp_lower_paths, UNIONFS_D(sb->s_root)->lower_paths,
               cur_branches * sizeof(struct path));
        for (i = 0; i < cur_branches; i++)
-               pathget(&tmp_lower_paths[i]); /* drop refs at end of fxn */
+               path_get(&tmp_lower_paths[i]); /* drop refs at end of fxn */
 
        /*******************************************************************
         * For each branch command, do path_lookup on the requested branch,
@@ -1008,9 +1008,10 @@ static int unionfs_show_options(struct seq_file *m, struct vfsmount *mnt)
 
        seq_printf(m, ",dirs=");
        for (bindex = bstart; bindex <= bend; bindex++) {
-               path = d_path(unionfs_lower_dentry_idx(sb->s_root, bindex),
-                             unionfs_lower_mnt_idx(sb->s_root, bindex),
-                             tmp_page, PAGE_SIZE);
+               struct path p;
+               p.dentry = unionfs_lower_dentry_idx(sb->s_root, bindex);
+               p.mnt = unionfs_lower_mnt_idx(sb->s_root, bindex);
+               path = d_path(&p, tmp_page, PAGE_SIZE);
                if (IS_ERR(path)) {
                        ret = PTR_ERR(path);
                        goto out;
index 3cf4bdba86031521e9d3d0716fdbb7ae2ecc6778..eba45ea1029899aaa57da823db1fddacadae9944 100644 (file)
@@ -3,7 +3,7 @@
 
 #include <linux/dcache.h>
 #include <linux/linkage.h>
-#include <linux/mount.h>
+#include <linux/path.h>
 
 struct vfsmount;
 
@@ -106,16 +106,4 @@ static inline void nd_terminate_link(void *name, size_t len, size_t maxlen)
        ((char *) name)[min(len, maxlen)] = '\0';
 }
 
-static inline void pathget(struct path *path)
-{
-       mntget(path->mnt);
-       dget(path->dentry);
-}
-
-static inline void pathput(struct path *path)
-{
-       dput(path->dentry);
-       mntput(path->mnt);
-}
-
 #endif /* _LINUX_NAMEI_H */