|
@@ -1202,42 +1202,6 @@ mext_check_arguments(struct inode *orig_inode,
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
|
-/**
|
|
|
- * ext4_inode_double_lock - Lock i_mutex on both @inode1 and @inode2
|
|
|
- *
|
|
|
- * @inode1: the inode structure
|
|
|
- * @inode2: the inode structure
|
|
|
- *
|
|
|
- * Lock two inodes' i_mutex
|
|
|
- */
|
|
|
-void
|
|
|
-ext4_inode_double_lock(struct inode *inode1, struct inode *inode2)
|
|
|
-{
|
|
|
- BUG_ON(inode1 == inode2);
|
|
|
- if (inode1 < inode2) {
|
|
|
- mutex_lock_nested(&inode1->i_mutex, I_MUTEX_PARENT);
|
|
|
- mutex_lock_nested(&inode2->i_mutex, I_MUTEX_CHILD);
|
|
|
- } else {
|
|
|
- mutex_lock_nested(&inode2->i_mutex, I_MUTEX_PARENT);
|
|
|
- mutex_lock_nested(&inode1->i_mutex, I_MUTEX_CHILD);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-/**
|
|
|
- * ext4_inode_double_unlock - Release i_mutex on both @inode1 and @inode2
|
|
|
- *
|
|
|
- * @inode1: the inode that is released first
|
|
|
- * @inode2: the inode that is released second
|
|
|
- *
|
|
|
- */
|
|
|
-
|
|
|
-void
|
|
|
-ext4_inode_double_unlock(struct inode *inode1, struct inode *inode2)
|
|
|
-{
|
|
|
- mutex_unlock(&inode1->i_mutex);
|
|
|
- mutex_unlock(&inode2->i_mutex);
|
|
|
-}
|
|
|
-
|
|
|
/**
|
|
|
* ext4_move_extents - Exchange the specified range of a file
|
|
|
*
|
|
@@ -1327,7 +1291,7 @@ ext4_move_extents(struct file *o_filp, struct file *d_filp,
|
|
|
return -EINVAL;
|
|
|
}
|
|
|
/* Protect orig and donor inodes against a truncate */
|
|
|
- ext4_inode_double_lock(orig_inode, donor_inode);
|
|
|
+ lock_two_nondirectories(orig_inode, donor_inode);
|
|
|
|
|
|
/* Wait for all existing dio workers */
|
|
|
ext4_inode_block_unlocked_dio(orig_inode);
|
|
@@ -1535,7 +1499,7 @@ out:
|
|
|
ext4_double_up_write_data_sem(orig_inode, donor_inode);
|
|
|
ext4_inode_resume_unlocked_dio(orig_inode);
|
|
|
ext4_inode_resume_unlocked_dio(donor_inode);
|
|
|
- ext4_inode_double_unlock(orig_inode, donor_inode);
|
|
|
+ unlock_two_nondirectories(orig_inode, donor_inode);
|
|
|
|
|
|
return ret;
|
|
|
}
|