]> xenbits.xensource.com Git - arm/linux.git/commitdiff
xfs: update got in xfs_bmap_shift_update_extent
authorChristoph Hellwig <hch@lst.de>
Thu, 19 Oct 2017 18:08:51 +0000 (11:08 -0700)
committerDarrick J. Wong <darrick.wong@oracle.com>
Thu, 26 Oct 2017 22:38:28 +0000 (15:38 -0700)
This way the caller gets the proper updated extent returned in got.

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

index ad7a36047df74a45e9040b4fa99c232192ce4793..680be0561bb444c92a047c79ce9a666f9892d2e2 100644 (file)
@@ -5591,35 +5591,33 @@ xfs_bmap_shift_update_extent(
        xfs_fileoff_t           startoff)
 {
        struct xfs_mount        *mp = ip->i_mount;
-       struct xfs_bmbt_irec    new;
+       struct xfs_bmbt_irec    prev = *got;
        int                     error, i;
 
        *logflags |= XFS_ILOG_CORE;
 
-       new = *got;
-       new.br_startoff = startoff;
+       got->br_startoff = startoff;
 
        if (cur) {
-               error = xfs_bmbt_lookup_eq(cur, got, &i);
+               error = xfs_bmbt_lookup_eq(cur, &prev, &i);
                if (error)
                        return error;
                XFS_WANT_CORRUPTED_RETURN(mp, i == 1);
 
-               error = xfs_bmbt_update(cur, &new);
+               error = xfs_bmbt_update(cur, got);
                if (error)
                        return error;
        } else {
                *logflags |= XFS_ILOG_DEXT;
        }
 
-       xfs_iext_update_extent(ip, xfs_bmap_fork_to_state(whichfork), idx,
-                       &new);
+       xfs_iext_update_extent(ip, xfs_bmap_fork_to_state(whichfork), idx, got);
 
        /* update reverse mapping */
-       error = xfs_rmap_unmap_extent(mp, dfops, ip, whichfork, got);
+       error = xfs_rmap_unmap_extent(mp, dfops, ip, whichfork, &prev);
        if (error)
                return error;
-       return xfs_rmap_map_extent(mp, dfops, ip, whichfork, &new);
+       return xfs_rmap_map_extent(mp, dfops, ip, whichfork, got);
 }
 
 int