ocfs2: adjust code to match locking/unlocking order

Unlocking order in ocfs2_unlink and ocfs2_rename mismatches the
corresponding locking order, although it won't cause issues, adjust the
code so that it looks more reasonable.

Signed-off-by: Joseph Qi <joseph.qi@huawei.com>
Cc: Mark Fasheh <mfasheh@suse.com>
Cc: Joel Becker <jlbec@evilplan.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
Joseph Qi 2015-09-04 15:43:52 -07:00 committed by Linus Torvalds
parent bf59e6623a
commit 3cb2ec43f6
1 changed files with 17 additions and 17 deletions

View File

@ -1035,11 +1035,6 @@ static int ocfs2_unlink(struct inode *dir,
if (handle)
ocfs2_commit_trans(osb, handle);
if (child_locked)
ocfs2_inode_unlock(inode, 1);
ocfs2_inode_unlock(dir, 1);
if (orphan_dir) {
/* This was locked for us in ocfs2_prepare_orphan_dir() */
ocfs2_inode_unlock(orphan_dir, 1);
@ -1047,6 +1042,11 @@ static int ocfs2_unlink(struct inode *dir,
iput(orphan_dir);
}
if (child_locked)
ocfs2_inode_unlock(inode, 1);
ocfs2_inode_unlock(dir, 1);
brelse(fe_bh);
brelse(parent_node_bh);
@ -1633,21 +1633,9 @@ static int ocfs2_rename(struct inode *old_dir,
ocfs2_dentry_move(old_dentry, new_dentry, old_dir, new_dir);
status = 0;
bail:
if (rename_lock)
ocfs2_rename_unlock(osb);
if (handle)
ocfs2_commit_trans(osb, handle);
if (parents_locked)
ocfs2_double_unlock(old_dir, new_dir);
if (old_child_locked)
ocfs2_inode_unlock(old_inode, 1);
if (new_child_locked)
ocfs2_inode_unlock(new_inode, 1);
if (orphan_dir) {
/* This was locked for us in ocfs2_prepare_orphan_dir() */
ocfs2_inode_unlock(orphan_dir, 1);
@ -1655,6 +1643,18 @@ static int ocfs2_rename(struct inode *old_dir,
iput(orphan_dir);
}
if (new_child_locked)
ocfs2_inode_unlock(new_inode, 1);
if (old_child_locked)
ocfs2_inode_unlock(old_inode, 1);
if (parents_locked)
ocfs2_double_unlock(old_dir, new_dir);
if (rename_lock)
ocfs2_rename_unlock(osb);
if (new_inode)
sync_mapping_buffers(old_inode->i_mapping);