From: Jan Blunck Switch from nd->{dentry,mnt} to nd->path.{dentry,mnt} everywhere. Signed-off-by: Jan Blunck Signed-off-by: Andreas Gruenbacher Acked-by: Christoph Hellwig Cc: Al Viro CC: Signed-off-by: Andrew Morton --- fs/unionfs/inode.c | 12 ++++-------- fs/unionfs/main.c | 9 ++++----- fs/unionfs/super.c | 17 ++++++++--------- 3 files changed, 16 insertions(+), 22 deletions(-) diff -puN fs/unionfs/inode.c~embed-a-struct-path-into-struct-nameidata-instead-of-nd-dentrymnt-unionfs fs/unionfs/inode.c --- a/fs/unionfs/inode.c~embed-a-struct-path-into-struct-nameidata-instead-of-nd-dentrymnt-unionfs +++ a/fs/unionfs/inode.c @@ -185,10 +185,8 @@ static struct dentry *unionfs_lookup(str unionfs_read_lock(dentry->d_sb); /* save the dentry & vfsmnt from namei */ - if (nd) { - path_save.dentry = nd->dentry; - path_save.mnt = nd->mnt; - } + if (nd) + path_save = nd->path; /* * unionfs_lookup_backend returns a locked dentry upon success, @@ -197,10 +195,8 @@ static struct dentry *unionfs_lookup(str ret = unionfs_lookup_backend(dentry, nd, INTERPOSE_LOOKUP); /* restore the dentry & vfsmnt in namei */ - if (nd) { - nd->dentry = path_save.dentry; - nd->mnt = path_save.mnt; - } + if (nd) + nd->path = path_save; if (!IS_ERR(ret)) { if (ret) dentry = ret; diff -puN fs/unionfs/main.c~embed-a-struct-path-into-struct-nameidata-instead-of-nd-dentrymnt-unionfs fs/unionfs/main.c --- a/fs/unionfs/main.c~embed-a-struct-path-into-struct-nameidata-instead-of-nd-dentrymnt-unionfs +++ a/fs/unionfs/main.c @@ -226,11 +226,11 @@ void unionfs_reinterpose(struct 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; } @@ -371,8 +371,7 @@ static int parse_dirs_option(struct supe 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] = nd.path; set_branchperms(sb, bindex, perms); set_branch_count(sb, bindex, 0); diff -puN fs/unionfs/super.c~embed-a-struct-path-into-struct-nameidata-instead-of-nd-dentrymnt-unionfs fs/unionfs/super.c --- a/fs/unionfs/super.c~embed-a-struct-path-into-struct-nameidata-instead-of-nd-dentrymnt-unionfs +++ a/fs/unionfs/super.c @@ -214,8 +214,8 @@ static noinline int do_remount_mode_opti 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_release(&nd); /* no longer needed */ if (idx == cur_branches) { @@ -257,8 +257,8 @@ static noinline int do_remount_del_optio 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_release(&nd); /* no longer needed */ if (idx == cur_branches) { @@ -341,8 +341,8 @@ static noinline int do_remount_add_optio 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_release(&nd); /* no longer needed */ if (idx == cur_branches) { @@ -404,10 +404,9 @@ 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] = nd.path; - 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 */ _