Unionfs: move a rename helper closer to rename code
authorErez Zadok <ezk@cs.sunysb.edu>
Mon, 28 Jul 2008 04:25:46 +0000 (00:25 -0400)
committerErez Zadok <ezk@cs.sunysb.edu>
Fri, 12 Aug 2011 02:38:15 +0000 (22:38 -0400)
Signed-off-by: Erez Zadok <ezk@cs.sunysb.edu>
fs/unionfs/rename.c
fs/unionfs/subr.c
fs/unionfs/union.h

index fe8d877104e892b78662e570e564bfbebd06b8a9..5b3f1a3a9723457dbf50690c68854bfb9a63a526 100644 (file)
 
 #include "union.h"
 
+/*
+ * This is a helper function for rename, used when rename ends up with hosed
+ * over dentries and we need to revert.
+ */
+static int unionfs_refresh_lower_dentry(struct dentry *dentry, int bindex)
+{
+       struct dentry *lower_dentry;
+       struct dentry *lower_parent;
+       int err = 0;
+
+       verify_locked(dentry);
+
+       unionfs_lock_dentry(dentry->d_parent, UNIONFS_DMUTEX_CHILD);
+       lower_parent = unionfs_lower_dentry_idx(dentry->d_parent, bindex);
+       unionfs_unlock_dentry(dentry->d_parent);
+
+       BUG_ON(!S_ISDIR(lower_parent->d_inode->i_mode));
+
+       lower_dentry = lookup_one_len(dentry->d_name.name, lower_parent,
+                                     dentry->d_name.len);
+       if (IS_ERR(lower_dentry)) {
+               err = PTR_ERR(lower_dentry);
+               goto out;
+       }
+
+       dput(unionfs_lower_dentry_idx(dentry, bindex));
+       iput(unionfs_lower_inode_idx(dentry->d_inode, bindex));
+       unionfs_set_lower_inode_idx(dentry->d_inode, bindex, NULL);
+
+       if (!lower_dentry->d_inode) {
+               dput(lower_dentry);
+               unionfs_set_lower_dentry_idx(dentry, bindex, NULL);
+       } else {
+               unionfs_set_lower_dentry_idx(dentry, bindex, lower_dentry);
+               unionfs_set_lower_inode_idx(dentry->d_inode, bindex,
+                                           igrab(lower_dentry->d_inode));
+       }
+
+out:
+       return err;
+}
+
 static int __unionfs_rename(struct inode *old_dir, struct dentry *old_dentry,
                            struct inode *new_dir, struct dentry *new_dentry,
                            int bindex, struct dentry **wh_old)
index b76fa7aa00c2e13ffee5d79b286f620a3e5c6753..1f1db3d05003d7235d3c7d12f2a72304f0d5c3a7 100644 (file)
@@ -114,48 +114,6 @@ out:
        return err;
 }
 
-/*
- * This is a helper function for rename, which ends up with hosed over
- * dentries when it needs to revert.
- */
-int unionfs_refresh_lower_dentry(struct dentry *dentry, int bindex)
-{
-       struct dentry *lower_dentry;
-       struct dentry *lower_parent;
-       int err = 0;
-
-       verify_locked(dentry);
-
-       unionfs_lock_dentry(dentry->d_parent, UNIONFS_DMUTEX_CHILD);
-       lower_parent = unionfs_lower_dentry_idx(dentry->d_parent, bindex);
-       unionfs_unlock_dentry(dentry->d_parent);
-
-       BUG_ON(!S_ISDIR(lower_parent->d_inode->i_mode));
-
-       lower_dentry = lookup_one_len(dentry->d_name.name, lower_parent,
-                                     dentry->d_name.len);
-       if (IS_ERR(lower_dentry)) {
-               err = PTR_ERR(lower_dentry);
-               goto out;
-       }
-
-       dput(unionfs_lower_dentry_idx(dentry, bindex));
-       iput(unionfs_lower_inode_idx(dentry->d_inode, bindex));
-       unionfs_set_lower_inode_idx(dentry->d_inode, bindex, NULL);
-
-       if (!lower_dentry->d_inode) {
-               dput(lower_dentry);
-               unionfs_set_lower_dentry_idx(dentry, bindex, NULL);
-       } else {
-               unionfs_set_lower_dentry_idx(dentry, bindex, lower_dentry);
-               unionfs_set_lower_inode_idx(dentry->d_inode, bindex,
-                                           igrab(lower_dentry->d_inode));
-       }
-
-out:
-       return err;
-}
-
 int make_dir_opaque(struct dentry *dentry, int bindex)
 {
        int err = 0;
index 7420cb07d416822c85c93a3eaf81ca6b271dbf65..9520a00e9a3604cca76bd97d8153a03805cbfdd6 100644 (file)
@@ -353,9 +353,6 @@ extern int check_empty(struct dentry *dentry,
 extern int delete_whiteouts(struct dentry *dentry, int bindex,
                            struct unionfs_dir_state *namelist);
 
-/* Re-lookup a lower dentry. */
-extern int unionfs_refresh_lower_dentry(struct dentry *dentry, int bindex);
-
 extern void unionfs_reinterpose(struct dentry *this_dentry);
 extern struct super_block *unionfs_duplicate_super(struct super_block *sb);