Unionfs: move a rename helper closer to rename code
authorErez Zadok <ezk@cs.sunysb.edu>
Mon, 28 Jul 2008 06:33:12 +0000 (02:33 -0400)
committerErez Zadok <ezk@cs.sunysb.edu>
Mon, 28 Jul 2008 06:33:12 +0000 (02:33 -0400)
Signed-off-by: Erez Zadok <ezk@cs.sunysb.edu>
fs/unionfs/rename.c
fs/unionfs/subr.c
fs/unionfs/union.h

index 10c69ae99fe6126ee63276c97fbc1e01dda6d69e..39370982f1b689ee6f62ce3e164297d140bd4f19 100644 (file)
 
 #include "union.h"
 
+/*
+ * 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((char *) 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 3e6ef8781ad8f9a484f24de44f12ba85c3523b79..e2fe59acd1dbc31dd5f7c2dfddb99a2ab5df408b 100644 (file)
@@ -109,48 +109,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((char *) 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 1268e824dd1470b9a616518d879f7fb188b3179e..12bb4b8ce3009dd1fab5e82ad7523093e25114ee 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);