return ret;
 }
 
-static void btrfs_double_inode_unlock(struct inode *inode1, struct inode *inode2)
-{
-       inode_unlock(inode1);
-       inode_unlock(inode2);
-}
-
-static void btrfs_double_inode_lock(struct inode *inode1, struct inode *inode2)
-{
-       if (inode1 < inode2)
-               swap(inode1, inode2);
-
-       inode_lock_nested(inode1, I_MUTEX_PARENT);
-       inode_lock_nested(inode2, I_MUTEX_CHILD);
-}
-
 static void btrfs_double_extent_unlock(struct inode *inode1, u64 loff1,
                                       struct inode *inode2, u64 loff2, u64 len)
 {
        if (same_inode)
                inode_lock(inode_in);
        else
-               btrfs_double_inode_lock(inode_in, inode_out);
+               lock_two_nondirectories(inode_in, inode_out);
 
        /* don't make the dst file partly checksummed */
        if ((BTRFS_I(inode_in)->flags & BTRFS_INODE_NODATASUM) !=
        if (same_inode)
                inode_unlock(inode_in);
        else
-               btrfs_double_inode_unlock(inode_in, inode_out);
+               unlock_two_nondirectories(inode_in, inode_out);
 
        return ret;
 }
        if (same_inode)
                inode_unlock(src_inode);
        else
-               btrfs_double_inode_unlock(src_inode, dst_inode);
+               unlock_two_nondirectories(src_inode, dst_inode);
 
        return ret < 0 ? ret : len;
 }