Merge tag 'for-linus' of git://git.kernel.org/pub/scm/virt/kvm/kvm
[sfrench/cifs-2.6.git] / fs / xfs / xfs_bmap_util.c
index addbd74ecd8e5185ec70ae91cfe4cebe700bc9bb..6de8d90041ff0e676e85e559c1b2eef65dd74946 100644 (file)
@@ -702,13 +702,9 @@ xfs_bmap_punch_delalloc_range(
        struct xfs_iext_cursor  icur;
        int                     error = 0;
 
-       xfs_ilock(ip, XFS_ILOCK_EXCL);
-       if (!(ifp->if_flags & XFS_IFEXTENTS)) {
-               error = xfs_iread_extents(NULL, ip, XFS_DATA_FORK);
-               if (error)
-                       goto out_unlock;
-       }
+       ASSERT(ifp->if_flags & XFS_IFEXTENTS);
 
+       xfs_ilock(ip, XFS_ILOCK_EXCL);
        if (!xfs_iext_lookup_extent_before(ip, ifp, &end_fsb, &icur, &got))
                goto out_unlock;
 
@@ -1584,7 +1580,7 @@ xfs_swap_extent_rmap(
                                        tirec.br_blockcount, &irec,
                                        &nimaps, 0);
                        if (error)
-                               goto out_defer;
+                               goto out;
                        ASSERT(nimaps == 1);
                        ASSERT(tirec.br_startoff == irec.br_startoff);
                        trace_xfs_swap_extent_rmap_remap_piece(ip, &irec);
@@ -1599,22 +1595,22 @@ xfs_swap_extent_rmap(
                        /* Remove the mapping from the donor file. */
                        error = xfs_bmap_unmap_extent(tp, tip, &uirec);
                        if (error)
-                               goto out_defer;
+                               goto out;
 
                        /* Remove the mapping from the source file. */
                        error = xfs_bmap_unmap_extent(tp, ip, &irec);
                        if (error)
-                               goto out_defer;
+                               goto out;
 
                        /* Map the donor file's blocks into the source file. */
                        error = xfs_bmap_map_extent(tp, ip, &uirec);
                        if (error)
-                               goto out_defer;
+                               goto out;
 
                        /* Map the source file's blocks into the donor file. */
                        error = xfs_bmap_map_extent(tp, tip, &irec);
                        if (error)
-                               goto out_defer;
+                               goto out;
 
                        error = xfs_defer_finish(tpp);
                        tp = *tpp;
@@ -1636,8 +1632,6 @@ xfs_swap_extent_rmap(
        tip->i_d.di_flags2 = tip_flags2;
        return 0;
 
-out_defer:
-       xfs_defer_cancel(tp);
 out:
        trace_xfs_swap_extent_rmap_error(ip, error, _RET_IP_);
        tip->i_d.di_flags2 = tip_flags2;