[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <11988745951583-git-send-email-ezk@cs.sunysb.edu>
Date: Fri, 28 Dec 2007 15:42:55 -0500
From: Erez Zadok <ezk@...sunysb.edu>
To: akpm@...ux-foundation.org
Cc: linux-kernel@...r.kernel.org, linux-fsdevel@...r.kernel.org,
viro@....linux.org.uk, hch@...radead.org,
Erez Zadok <ezk@...sunysb.edu>
Subject: [PATCH 21/30] Unionfs: minor code rearrangement in rename
To avoid too much code nesting.
Signed-off-by: Erez Zadok <ezk@...sunysb.edu>
---
fs/unionfs/rename.c | 83 ++++++++++++++++++++++++--------------------------
1 files changed, 40 insertions(+), 43 deletions(-)
diff --git a/fs/unionfs/rename.c b/fs/unionfs/rename.c
index 824c285..1019d47 100644
--- a/fs/unionfs/rename.c
+++ b/fs/unionfs/rename.c
@@ -479,54 +479,51 @@ int unionfs_rename(struct inode *old_dir, struct dentry *old_dentry,
goto out;
}
}
+
err = do_unionfs_rename(old_dir, old_dentry, new_dir, new_dentry);
-out:
- if (err) {
- /* clear the new_dentry stuff created */
- d_drop(new_dentry);
- } else {
- /*
- * force re-lookup since the dir on ro branch is not renamed,
- * and lower dentries still indicate the un-renamed ones.
- */
- if (S_ISDIR(old_dentry->d_inode->i_mode))
- atomic_dec(&UNIONFS_D(old_dentry)->generation);
- else
- unionfs_postcopyup_release(old_dentry);
- if (new_dentry->d_inode &&
- !S_ISDIR(new_dentry->d_inode->i_mode)) {
- unionfs_postcopyup_release(new_dentry);
- unionfs_postcopyup_setmnt(new_dentry);
- if (!unionfs_lower_inode(new_dentry->d_inode)) {
- /*
- * If we get here, it means that no copyup
- * was needed, and that a file by the old
- * name already existing on the destination
- * branch; that file got renamed earlier in
- * this function, so all we need to do here
- * is set the lower inode.
- */
- struct inode *inode;
- inode = unionfs_lower_inode(
- old_dentry->d_inode);
- igrab(inode);
- unionfs_set_lower_inode_idx(
- new_dentry->d_inode,
- dbstart(new_dentry), inode);
- }
+ if (err)
+ goto out;
+ /*
+ * force re-lookup since the dir on ro branch is not renamed, and
+ * lower dentries still indicate the un-renamed ones.
+ */
+ if (S_ISDIR(old_dentry->d_inode->i_mode))
+ atomic_dec(&UNIONFS_D(old_dentry)->generation);
+ else
+ unionfs_postcopyup_release(old_dentry);
+ if (new_dentry->d_inode && !S_ISDIR(new_dentry->d_inode->i_mode)) {
+ unionfs_postcopyup_release(new_dentry);
+ unionfs_postcopyup_setmnt(new_dentry);
+ if (!unionfs_lower_inode(new_dentry->d_inode)) {
+ /*
+ * If we get here, it means that no copyup was
+ * needed, and that a file by the old name already
+ * existing on the destination branch; that file got
+ * renamed earlier in this function, so all we need
+ * to do here is set the lower inode.
+ */
+ struct inode *inode;
+ inode = unionfs_lower_inode(old_dentry->d_inode);
+ igrab(inode);
+ unionfs_set_lower_inode_idx(new_dentry->d_inode,
+ dbstart(new_dentry),
+ inode);
}
- /* if all of this renaming succeeded, update our times */
- unionfs_copy_attr_times(old_dir);
- unionfs_copy_attr_times(new_dir);
- unionfs_copy_attr_times(old_dentry->d_inode);
- unionfs_copy_attr_times(new_dentry->d_inode);
- unionfs_check_inode(old_dir);
- unionfs_check_inode(new_dir);
- unionfs_check_dentry(old_dentry);
- unionfs_check_dentry(new_dentry);
}
+ /* if all of this renaming succeeded, update our times */
+ unionfs_copy_attr_times(old_dir);
+ unionfs_copy_attr_times(new_dir);
+ unionfs_copy_attr_times(old_dentry->d_inode);
+ unionfs_copy_attr_times(new_dentry->d_inode);
+ unionfs_check_inode(old_dir);
+ unionfs_check_inode(new_dir);
+ unionfs_check_dentry(old_dentry);
+ unionfs_check_dentry(new_dentry);
+out:
+ if (err) /* clear the new_dentry stuff created */
+ d_drop(new_dentry);
unionfs_unlock_dentry(new_dentry);
unionfs_unlock_dentry(old_dentry);
unionfs_read_unlock(old_dentry->d_sb);
--
1.5.2.2
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists