xfs: simplify the rmap code in xfs_bmse_merge
authorDarrick J. Wong <darrick.wong@oracle.com>
Wed, 30 Aug 2017 23:06:36 +0000 (16:06 -0700)
committerDarrick J. Wong <darrick.wong@oracle.com>
Fri, 1 Sep 2017 20:08:26 +0000 (13:08 -0700)
In Christoph's patch to refactor xfs_bmse_merge, the updated rmap code
does more work than it needs to (because map-extent auto-merges
records).  Remove the unnecessary unmap and save ourselves a deferred
op.

Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
fs/xfs/libxfs/xfs_bmap.c

index 9b877024c804d96b18c850eeda4108532d572c04..9558f5ee1bf96b928544d0b9ecfe1c4ef881e1ed 100644 (file)
@@ -5942,13 +5942,12 @@ done:
        xfs_iext_update_extent(ifp, current_ext - 1, &new);
        xfs_iext_remove(ip, current_ext, 1, 0);
 
-       /* update reverse mapping */
+       /* update reverse mapping. rmap functions merge the rmaps for us */
        error = xfs_rmap_unmap_extent(mp, dfops, ip, whichfork, got);
        if (error)
                return error;
-       error = xfs_rmap_unmap_extent(mp, dfops, ip, whichfork, left);
-       if (error)
-               return error;
+       memcpy(&new, got, sizeof(new));
+       new.br_startoff = left->br_startoff + left->br_blockcount;
        return xfs_rmap_map_extent(mp, dfops, ip, whichfork, &new);
 }