xfs: move pre/post-bmap tracing into xfs_iext_update_extent
authorChristoph Hellwig <hch@lst.de>
Thu, 19 Oct 2017 18:04:44 +0000 (11:04 -0700)
committerDarrick J. Wong <darrick.wong@oracle.com>
Thu, 26 Oct 2017 22:38:27 +0000 (15:38 -0700)
xfs_iext_update_extent already has basically all the information needed
to centralize the bmap pre/post tracing.  We just need to pass inode +
bmap state instead of the inode fork pointer to get all trace annotations.

In addition to covering all the existing trace points this gives us
tracing coverage for the extent shifting operations for free.

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
fs/xfs/libxfs/xfs_inode_fork.c
fs/xfs/libxfs/xfs_inode_fork.h

index 1a03d43..c2d6f2b 100644 (file)
@@ -1669,10 +1669,8 @@ xfs_bmap_add_extent_delay_real(
                 * The left and right neighbors are both contiguous with new.
                 */
                bma->idx--;
-               trace_xfs_bmap_pre_update(bma->ip, bma->idx, state, _THIS_IP_);
                LEFT.br_blockcount += PREV.br_blockcount + RIGHT.br_blockcount;
-               xfs_iext_update_extent(ifp, bma->idx, &LEFT);
-               trace_xfs_bmap_post_update(bma->ip, bma->idx, state, _THIS_IP_);
+               xfs_iext_update_extent(bma->ip, state, bma->idx, &LEFT);
 
                xfs_iext_remove(bma->ip, bma->idx + 1, 2, state);
                (*nextents)--;
@@ -1706,10 +1704,8 @@ xfs_bmap_add_extent_delay_real(
                bma->idx--;
 
                old = LEFT;
-               trace_xfs_bmap_pre_update(bma->ip, bma->idx, state, _THIS_IP_);
                LEFT.br_blockcount += PREV.br_blockcount;
-               xfs_iext_update_extent(ifp, bma->idx, &LEFT);
-               trace_xfs_bmap_post_update(bma->ip, bma->idx, state, _THIS_IP_);
+               xfs_iext_update_extent(bma->ip, state, bma->idx, &LEFT);
 
                xfs_iext_remove(bma->ip, bma->idx + 1, 1, state);
                if (bma->cur == NULL)
@@ -1731,11 +1727,9 @@ xfs_bmap_add_extent_delay_real(
                 * Filling in all of a previously delayed allocation extent.
                 * The right neighbor is contiguous, the left is not.
                 */
-               trace_xfs_bmap_pre_update(bma->ip, bma->idx, state, _THIS_IP_);
                PREV.br_startblock = new->br_startblock;
                PREV.br_blockcount += RIGHT.br_blockcount;
-               xfs_iext_update_extent(ifp, bma->idx, &PREV);
-               trace_xfs_bmap_post_update(bma->ip, bma->idx, state, _THIS_IP_);
+               xfs_iext_update_extent(bma->ip, state, bma->idx, &PREV);
 
                xfs_iext_remove(bma->ip, bma->idx + 1, 1, state);
                if (bma->cur == NULL)
@@ -1758,11 +1752,9 @@ xfs_bmap_add_extent_delay_real(
                 * Neither the left nor right neighbors are contiguous with
                 * the new one.
                 */
-               trace_xfs_bmap_pre_update(bma->ip, bma->idx, state, _THIS_IP_);
                PREV.br_startblock = new->br_startblock;
                PREV.br_state = new->br_state;
-               xfs_iext_update_extent(ifp, bma->idx, &PREV);
-               trace_xfs_bmap_post_update(bma->ip, bma->idx, state, _THIS_IP_);
+               xfs_iext_update_extent(bma->ip, state, bma->idx, &PREV);
 
                (*nextents)++;
                if (bma->cur == NULL)
@@ -1790,17 +1782,13 @@ xfs_bmap_add_extent_delay_real(
                da_new = XFS_FILBLKS_MIN(xfs_bmap_worst_indlen(bma->ip, temp),
                                startblockval(PREV.br_startblock));
 
-               trace_xfs_bmap_pre_update(bma->ip, bma->idx - 1, state, _THIS_IP_);
                LEFT.br_blockcount += new->br_blockcount;
-               xfs_iext_update_extent(ifp, bma->idx - 1, &LEFT);
-               trace_xfs_bmap_post_update(bma->ip, bma->idx - 1, state, _THIS_IP_);
+               xfs_iext_update_extent(bma->ip, state, bma->idx - 1, &LEFT);
 
-               trace_xfs_bmap_pre_update(bma->ip, bma->idx, state, _THIS_IP_);
                PREV.br_blockcount = temp = PREV.br_blockcount - new->br_blockcount;
                PREV.br_startoff += new->br_blockcount;
                PREV.br_startblock = nullstartblock(da_new);
-               xfs_iext_update_extent(ifp, bma->idx, &PREV);
-               trace_xfs_bmap_post_update(bma->ip, bma->idx, state, _THIS_IP_);
+               xfs_iext_update_extent(bma->ip, state, bma->idx, &PREV);
 
                if (bma->cur == NULL)
                        rval = XFS_ILOG_DEXT;
@@ -1853,13 +1841,10 @@ xfs_bmap_add_extent_delay_real(
                        startblockval(PREV.br_startblock) -
                        (bma->cur ? bma->cur->bc_private.b.allocated : 0));
 
-               trace_xfs_bmap_pre_update(bma->ip, bma->idx + 1, state, _THIS_IP_);
                PREV.br_startoff = new_endoff;
                PREV.br_blockcount = temp;
                PREV.br_startblock = nullstartblock(da_new);
-               xfs_iext_update_extent(ifp, bma->idx + 1, &PREV);
-               trace_xfs_bmap_post_update(bma->ip, bma->idx + 1, state, _THIS_IP_);
-
+               xfs_iext_update_extent(bma->ip, state, bma->idx + 1, &PREV);
                break;
 
        case BMAP_RIGHT_FILLING | BMAP_RIGHT_CONTIG:
@@ -1868,12 +1853,10 @@ xfs_bmap_add_extent_delay_real(
                 * The right neighbor is contiguous with the new allocation.
                 */
                old = RIGHT;
-               trace_xfs_bmap_pre_update(bma->ip, bma->idx + 1, state, _THIS_IP_);
                RIGHT.br_startoff = new->br_startoff;
                RIGHT.br_startblock = new->br_startblock;
                RIGHT.br_blockcount += new->br_blockcount;
-               xfs_iext_update_extent(ifp, bma->idx + 1, &RIGHT);
-               trace_xfs_bmap_post_update(bma->ip, bma->idx + 1, state, _THIS_IP_);
+               xfs_iext_update_extent(bma->ip, state, bma->idx + 1, &RIGHT);
 
                if (bma->cur == NULL)
                        rval = XFS_ILOG_DEXT;
@@ -1892,11 +1875,9 @@ xfs_bmap_add_extent_delay_real(
                da_new = XFS_FILBLKS_MIN(xfs_bmap_worst_indlen(bma->ip, temp),
                        startblockval(PREV.br_startblock));
 
-               trace_xfs_bmap_pre_update(bma->ip, bma->idx, state, _THIS_IP_);
                PREV.br_blockcount = temp;
                PREV.br_startblock = nullstartblock(da_new);
-               xfs_iext_update_extent(ifp, bma->idx, &PREV);
-               trace_xfs_bmap_post_update(bma->ip, bma->idx, state, _THIS_IP_);
+               xfs_iext_update_extent(bma->ip, state, bma->idx, &PREV);
 
                bma->idx++;
                break;
@@ -1936,11 +1917,9 @@ xfs_bmap_add_extent_delay_real(
                        startblockval(PREV.br_startblock) -
                        (bma->cur ? bma->cur->bc_private.b.allocated : 0));
 
-               trace_xfs_bmap_pre_update(bma->ip, bma->idx, state, _THIS_IP_);
                PREV.br_startblock = nullstartblock(da_new);
                PREV.br_blockcount = temp;
-               xfs_iext_update_extent(ifp, bma->idx, &PREV);
-               trace_xfs_bmap_post_update(bma->ip, bma->idx, state, _THIS_IP_);
+               xfs_iext_update_extent(bma->ip, state, bma->idx, &PREV);
 
                bma->idx++;
                break;
@@ -1981,13 +1960,11 @@ xfs_bmap_add_extent_delay_real(
                                        RIGHT.br_blockcount));
 
                /* truncate PREV */
-               trace_xfs_bmap_pre_update(bma->ip, bma->idx, 0, _THIS_IP_);
                PREV.br_blockcount = new->br_startoff - PREV.br_startoff;
                PREV.br_startblock =
                        nullstartblock(xfs_bmap_worst_indlen(bma->ip,
                                        PREV.br_blockcount));
-               xfs_iext_update_extent(ifp, bma->idx, &PREV);
-               trace_xfs_bmap_post_update(bma->ip, bma->idx, state, _THIS_IP_);
+               xfs_iext_update_extent(bma->ip, state, bma->idx, &PREV);
 
                /* insert LEFT (r[0]) and RIGHT (r[1]) at the same time */
                xfs_iext_insert(bma->ip, bma->idx + 1, 2, &LEFT, state);
@@ -2192,10 +2169,8 @@ xfs_bmap_add_extent_unwritten_real(
                 */
                --*idx;
 
-               trace_xfs_bmap_pre_update(ip, *idx, state, _THIS_IP_);
                LEFT.br_blockcount += PREV.br_blockcount + RIGHT.br_blockcount;
-               xfs_iext_update_extent(ifp, *idx, &LEFT);
-               trace_xfs_bmap_post_update(ip, *idx, state, _THIS_IP_);
+               xfs_iext_update_extent(ip, state, *idx, &LEFT);
 
                xfs_iext_remove(ip, *idx + 1, 2, state);
                XFS_IFORK_NEXT_SET(ip, whichfork,
@@ -2233,10 +2208,8 @@ xfs_bmap_add_extent_unwritten_real(
                 */
                --*idx;
 
-               trace_xfs_bmap_pre_update(ip, *idx, state, _THIS_IP_);
                LEFT.br_blockcount += PREV.br_blockcount;
-               xfs_iext_update_extent(ifp, *idx, &LEFT);
-               trace_xfs_bmap_post_update(ip, *idx, state, _THIS_IP_);
+               xfs_iext_update_extent(ip, state, *idx, &LEFT);
 
                xfs_iext_remove(ip, *idx + 1, 1, state);
                XFS_IFORK_NEXT_SET(ip, whichfork,
@@ -2266,11 +2239,9 @@ xfs_bmap_add_extent_unwritten_real(
                 * Setting all of a previous oldext extent to newext.
                 * The right neighbor is contiguous, the left is not.
                 */
-               trace_xfs_bmap_pre_update(ip, *idx, state, _THIS_IP_);
                PREV.br_blockcount += RIGHT.br_blockcount;
                PREV.br_state = new->br_state;
-               xfs_iext_update_extent(ifp, *idx, &PREV);
-               trace_xfs_bmap_post_update(ip, *idx, state, _THIS_IP_);
+               xfs_iext_update_extent(ip, state, *idx, &PREV);
 
                xfs_iext_remove(ip, *idx + 1, 1, state);
                XFS_IFORK_NEXT_SET(ip, whichfork,
@@ -2301,10 +2272,8 @@ xfs_bmap_add_extent_unwritten_real(
                 * Neither the left nor right neighbors are contiguous with
                 * the new one.
                 */
-               trace_xfs_bmap_pre_update(ip, *idx, state, _THIS_IP_);
                PREV.br_state = new->br_state;
-               xfs_iext_update_extent(ifp, *idx, &PREV);
-               trace_xfs_bmap_post_update(ip, *idx, state, _THIS_IP_);
+               xfs_iext_update_extent(ip, state, *idx, &PREV);
 
                if (cur == NULL)
                        rval = XFS_ILOG_DEXT;
@@ -2325,18 +2294,14 @@ xfs_bmap_add_extent_unwritten_real(
                 * Setting the first part of a previous oldext extent to newext.
                 * The left neighbor is contiguous.
                 */
-               trace_xfs_bmap_pre_update(ip, *idx - 1, state, _THIS_IP_);
                LEFT.br_blockcount += new->br_blockcount;
-               xfs_iext_update_extent(ifp, *idx - 1, &LEFT);
-               trace_xfs_bmap_post_update(ip, *idx - 1, state, _THIS_IP_);
+               xfs_iext_update_extent(ip, state, *idx - 1, &LEFT);
 
                old = PREV;
-               trace_xfs_bmap_pre_update(ip, *idx, state, _THIS_IP_);
                PREV.br_startoff += new->br_blockcount;
                PREV.br_startblock += new->br_blockcount;
                PREV.br_blockcount -= new->br_blockcount;
-               xfs_iext_update_extent(ifp, *idx, &PREV);
-               trace_xfs_bmap_post_update(ip, *idx, state, _THIS_IP_);
+               xfs_iext_update_extent(ip, state, *idx, &PREV);
 
                --*idx;
 
@@ -2366,12 +2331,10 @@ xfs_bmap_add_extent_unwritten_real(
                 * The left neighbor is not contiguous.
                 */
                old = PREV;
-               trace_xfs_bmap_pre_update(ip, *idx, state, _THIS_IP_);
                PREV.br_startoff += new->br_blockcount;
                PREV.br_startblock += new->br_blockcount;
                PREV.br_blockcount -= new->br_blockcount;
-               xfs_iext_update_extent(ifp, *idx, &PREV);
-               trace_xfs_bmap_post_update(ip, *idx, state, _THIS_IP_);
+               xfs_iext_update_extent(ip, state, *idx, &PREV);
 
                xfs_iext_insert(ip, *idx, 1, new, state);
                XFS_IFORK_NEXT_SET(ip, whichfork,
@@ -2400,19 +2363,15 @@ xfs_bmap_add_extent_unwritten_real(
                 * The right neighbor is contiguous with the new allocation.
                 */
                old = PREV;
-               trace_xfs_bmap_pre_update(ip, *idx, state, _THIS_IP_);
                PREV.br_blockcount -= new->br_blockcount;
-               xfs_iext_update_extent(ifp, *idx, &PREV);
-               trace_xfs_bmap_post_update(ip, *idx, state, _THIS_IP_);
+               xfs_iext_update_extent(ip, state, *idx, &PREV);
 
                ++*idx;
 
-               trace_xfs_bmap_pre_update(ip, *idx, state, _THIS_IP_);
                RIGHT.br_startoff = new->br_startoff;
                RIGHT.br_startblock = new->br_startblock;
                RIGHT.br_blockcount += new->br_blockcount;
-               xfs_iext_update_extent(ifp, *idx, &RIGHT);
-               trace_xfs_bmap_post_update(ip, *idx, state, _THIS_IP_);
+               xfs_iext_update_extent(ip, state, *idx, &RIGHT);
 
                if (cur == NULL)
                        rval = XFS_ILOG_DEXT;
@@ -2440,10 +2399,8 @@ xfs_bmap_add_extent_unwritten_real(
                 * The right neighbor is not contiguous.
                 */
                old = PREV;
-               trace_xfs_bmap_pre_update(ip, *idx, state, _THIS_IP_);
                PREV.br_blockcount -= new->br_blockcount;
-               xfs_iext_update_extent(ifp, *idx, &PREV);
-               trace_xfs_bmap_post_update(ip, *idx, state, _THIS_IP_);
+               xfs_iext_update_extent(ip, state, *idx, &PREV);
 
                ++*idx;
                xfs_iext_insert(ip, *idx, 1, new, state);
@@ -2478,10 +2435,8 @@ xfs_bmap_add_extent_unwritten_real(
                 * One extent becomes three extents.
                 */
                old = PREV;
-               trace_xfs_bmap_pre_update(ip, *idx, state, _THIS_IP_);
                PREV.br_blockcount = new->br_startoff - PREV.br_startoff;
-               xfs_iext_update_extent(ifp, *idx, &PREV);
-               trace_xfs_bmap_post_update(ip, *idx, state, _THIS_IP_);
+               xfs_iext_update_extent(ip, state, *idx, &PREV);
 
                r[0] = *new;
                r[1].br_startoff = new_endoff;
@@ -2648,7 +2603,6 @@ xfs_bmap_add_extent_hole_delay(
                temp = left.br_blockcount + new->br_blockcount +
                        right.br_blockcount;
 
-               trace_xfs_bmap_pre_update(ip, *idx, state, _THIS_IP_);
                oldlen = startblockval(left.br_startblock) +
                        startblockval(new->br_startblock) +
                        startblockval(right.br_startblock);
@@ -2656,8 +2610,7 @@ xfs_bmap_add_extent_hole_delay(
                                         oldlen);
                left.br_startblock = nullstartblock(newlen);
                left.br_blockcount = temp;
-               xfs_iext_update_extent(ifp, *idx, &left);
-               trace_xfs_bmap_post_update(ip, *idx, state, _THIS_IP_);
+               xfs_iext_update_extent(ip, state, *idx, &left);
 
                xfs_iext_remove(ip, *idx + 1, 1, state);
                break;
@@ -2671,15 +2624,13 @@ xfs_bmap_add_extent_hole_delay(
                --*idx;
                temp = left.br_blockcount + new->br_blockcount;
 
-               trace_xfs_bmap_pre_update(ip, *idx, state, _THIS_IP_);
                oldlen = startblockval(left.br_startblock) +
                        startblockval(new->br_startblock);
                newlen = XFS_FILBLKS_MIN(xfs_bmap_worst_indlen(ip, temp),
                                         oldlen);
                left.br_blockcount = temp;
                left.br_startblock = nullstartblock(newlen);
-               xfs_iext_update_extent(ifp, *idx, &left);
-               trace_xfs_bmap_post_update(ip, *idx, state, _THIS_IP_);
+               xfs_iext_update_extent(ip, state, *idx, &left);
                break;
 
        case BMAP_RIGHT_CONTIG:
@@ -2688,7 +2639,6 @@ xfs_bmap_add_extent_hole_delay(
                 * on the right.
                 * Merge the new allocation with the right neighbor.
                 */
-               trace_xfs_bmap_pre_update(ip, *idx, state, _THIS_IP_);
                temp = new->br_blockcount + right.br_blockcount;
                oldlen = startblockval(new->br_startblock) +
                        startblockval(right.br_startblock);
@@ -2697,8 +2647,7 @@ xfs_bmap_add_extent_hole_delay(
                right.br_startoff = new->br_startoff;
                right.br_startblock = nullstartblock(newlen);
                right.br_blockcount = temp;
-               xfs_iext_update_extent(ifp, *idx, &right);
-               trace_xfs_bmap_post_update(ip, *idx, state, _THIS_IP_);
+               xfs_iext_update_extent(ip, state, *idx, &right);
                break;
 
        case 0:
@@ -2808,10 +2757,8 @@ xfs_bmap_add_extent_hole_real(
                 * Merge all three into a single extent record.
                 */
                --*idx;
-               trace_xfs_bmap_pre_update(ip, *idx, state, _THIS_IP_);
                left.br_blockcount += new->br_blockcount + right.br_blockcount;
-               xfs_iext_update_extent(ifp, *idx, &left);
-               trace_xfs_bmap_post_update(ip, *idx, state, _THIS_IP_);
+               xfs_iext_update_extent(ip, state, *idx, &left);
 
                xfs_iext_remove(ip, *idx + 1, 1, state);
 
@@ -2847,10 +2794,9 @@ xfs_bmap_add_extent_hole_real(
                 */
                --*idx;
                old = left;
-               trace_xfs_bmap_pre_update(ip, *idx, state, _THIS_IP_);
+
                left.br_blockcount += new->br_blockcount;
-               xfs_iext_update_extent(ifp, *idx, &left);
-               trace_xfs_bmap_post_update(ip, *idx, state, _THIS_IP_);
+               xfs_iext_update_extent(ip, state, *idx, &left);
 
                if (cur == NULL) {
                        rval = xfs_ilog_fext(whichfork);
@@ -2873,12 +2819,11 @@ xfs_bmap_add_extent_hole_real(
                 * Merge the new allocation with the right neighbor.
                 */
                old = right;
-               trace_xfs_bmap_pre_update(ip, *idx, state, _THIS_IP_);
+
                right.br_startoff = new->br_startoff;
                right.br_startblock = new->br_startblock;
                right.br_blockcount += new->br_blockcount;
-               xfs_iext_update_extent(ifp, *idx, &right);
-               trace_xfs_bmap_post_update(ip, *idx, state, _THIS_IP_);
+               xfs_iext_update_extent(ip, state, *idx, &right);
 
                if (cur == NULL) {
                        rval = xfs_ilog_fext(whichfork);
@@ -4780,26 +4725,22 @@ xfs_bmap_del_extent_delay(
                /*
                 * Deleting the first part of the extent.
                 */
-               trace_xfs_bmap_pre_update(ip, *idx, state, _THIS_IP_);
                got->br_startoff = del_endoff;
                got->br_blockcount -= del->br_blockcount;
                da_new = XFS_FILBLKS_MIN(xfs_bmap_worst_indlen(ip,
                                got->br_blockcount), da_old);
                got->br_startblock = nullstartblock((int)da_new);
-               xfs_iext_update_extent(ifp, *idx, got);
-               trace_xfs_bmap_post_update(ip, *idx, state, _THIS_IP_);
+               xfs_iext_update_extent(ip, state, *idx, got);
                break;
        case BMAP_RIGHT_FILLING:
                /*
                 * Deleting the last part of the extent.
                 */
-               trace_xfs_bmap_pre_update(ip, *idx, state, _THIS_IP_);
                got->br_blockcount = got->br_blockcount - del->br_blockcount;
                da_new = XFS_FILBLKS_MIN(xfs_bmap_worst_indlen(ip,
                                got->br_blockcount), da_old);
                got->br_startblock = nullstartblock((int)da_new);
-               xfs_iext_update_extent(ifp, *idx, got);
-               trace_xfs_bmap_post_update(ip, *idx, state, _THIS_IP_);
+               xfs_iext_update_extent(ip, state, *idx, got);
                break;
        case 0:
                /*
@@ -4811,8 +4752,6 @@ xfs_bmap_del_extent_delay(
                 * Warn if either of the new indlen reservations is zero as this
                 * can lead to delalloc problems.
                 */
-               trace_xfs_bmap_pre_update(ip, *idx, state, _THIS_IP_);
-
                got->br_blockcount = del->br_startoff - got->br_startoff;
                got_indlen = xfs_bmap_worst_indlen(ip, got->br_blockcount);
 
@@ -4824,8 +4763,7 @@ xfs_bmap_del_extent_delay(
                                                       del->br_blockcount);
 
                got->br_startblock = nullstartblock((int)got_indlen);
-               xfs_iext_update_extent(ifp, *idx, got);
-               trace_xfs_bmap_post_update(ip, *idx, 0, _THIS_IP_);
+               xfs_iext_update_extent(ip, state, *idx, got);
 
                new.br_startoff = del_endoff;
                new.br_state = got->br_state;
@@ -4890,30 +4828,24 @@ xfs_bmap_del_extent_cow(
                /*
                 * Deleting the first part of the extent.
                 */
-               trace_xfs_bmap_pre_update(ip, *idx, state, _THIS_IP_);
                got->br_startoff = del_endoff;
                got->br_blockcount -= del->br_blockcount;
                got->br_startblock = del->br_startblock + del->br_blockcount;
-               xfs_iext_update_extent(ifp, *idx, got);
-               trace_xfs_bmap_post_update(ip, *idx, state, _THIS_IP_);
+               xfs_iext_update_extent(ip, state, *idx, got);
                break;
        case BMAP_RIGHT_FILLING:
                /*
                 * Deleting the last part of the extent.
                 */
-               trace_xfs_bmap_pre_update(ip, *idx, state, _THIS_IP_);
                got->br_blockcount -= del->br_blockcount;
-               xfs_iext_update_extent(ifp, *idx, got);
-               trace_xfs_bmap_post_update(ip, *idx, state, _THIS_IP_);
+               xfs_iext_update_extent(ip, state, *idx, got);
                break;
        case 0:
                /*
                 * Deleting the middle of the extent.
                 */
-               trace_xfs_bmap_pre_update(ip, *idx, state, _THIS_IP_);
                got->br_blockcount = del->br_startoff - got->br_startoff;
-               xfs_iext_update_extent(ifp, *idx, got);
-               trace_xfs_bmap_post_update(ip, *idx, state, _THIS_IP_);
+               xfs_iext_update_extent(ip, state, *idx, got);
 
                new.br_startoff = del_endoff;
                new.br_blockcount = got_endoff - del_endoff;
@@ -5030,7 +4962,6 @@ xfs_bmap_del_extent_real(
                /*
                 * Matches the whole extent.  Delete the entry.
                 */
-               trace_xfs_bmap_pre_update(ip, *idx, state, _THIS_IP_);
                xfs_iext_remove(ip, *idx, 1, state);
                --*idx;
 
@@ -5049,12 +4980,10 @@ xfs_bmap_del_extent_real(
                /*
                 * Deleting the first part of the extent.
                 */
-               trace_xfs_bmap_pre_update(ip, *idx, state, _THIS_IP_);
                got.br_startoff = del_endoff;
                got.br_startblock = del_endblock;
                got.br_blockcount -= del->br_blockcount;
-               xfs_iext_update_extent(ifp, *idx, &got);
-               trace_xfs_bmap_post_update(ip, *idx, state, _THIS_IP_);
+               xfs_iext_update_extent(ip, state, *idx, &got);
                if (!cur) {
                        flags |= xfs_ilog_fext(whichfork);
                        break;
@@ -5067,10 +4996,8 @@ xfs_bmap_del_extent_real(
                /*
                 * Deleting the last part of the extent.
                 */
-               trace_xfs_bmap_pre_update(ip, *idx, state, _THIS_IP_);
                got.br_blockcount -= del->br_blockcount;
-               xfs_iext_update_extent(ifp, *idx, &got);
-               trace_xfs_bmap_post_update(ip, *idx, state, _THIS_IP_);
+               xfs_iext_update_extent(ip, state, *idx, &got);
                if (!cur) {
                        flags |= xfs_ilog_fext(whichfork);
                        break;
@@ -5083,11 +5010,10 @@ xfs_bmap_del_extent_real(
                /*
                 * Deleting the middle of the extent.
                 */
-               trace_xfs_bmap_pre_update(ip, *idx, state, _THIS_IP_);
-
                old = got;
+
                got.br_blockcount = del->br_startoff - got.br_startoff;
-               xfs_iext_update_extent(ifp, *idx, &got);
+               xfs_iext_update_extent(ip, state, *idx, &got);
 
                new.br_startoff = del_endoff;
                new.br_blockcount = got_endoff - del_endoff;
@@ -5131,7 +5057,7 @@ xfs_bmap_del_extent_real(
                                 * Reset the extent record back
                                 * to the original value.
                                 */
-                               xfs_iext_update_extent(ifp, *idx, &old);
+                               xfs_iext_update_extent(ip, state, *idx, &old);
                                flags = 0;
                                error = -ENOSPC;
                                goto done;
@@ -5141,7 +5067,6 @@ xfs_bmap_del_extent_real(
                        flags |= xfs_ilog_fext(whichfork);
                XFS_IFORK_NEXT_SET(ip, whichfork,
                        XFS_IFORK_NEXTENTS(ip, whichfork) + 1);
-               trace_xfs_bmap_post_update(ip, *idx, state, _THIS_IP_);
                xfs_iext_insert(ip, *idx + 1, 1, &new, state);
                ++*idx;
                break;
@@ -5616,7 +5541,6 @@ xfs_bmse_merge(
        int                             *logflags,      /* output */
        struct xfs_defer_ops            *dfops)
 {
-       struct xfs_ifork                *ifp = XFS_IFORK_PTR(ip, whichfork);
        struct xfs_bmbt_irec            new;
        xfs_filblks_t                   blockcount;
        int                             error, i;
@@ -5665,7 +5589,8 @@ xfs_bmse_merge(
                return error;
 
 done:
-       xfs_iext_update_extent(ifp, current_ext - 1, &new);
+       xfs_iext_update_extent(ip, xfs_bmap_fork_to_state(whichfork),
+                       current_ext - 1, &new);
        xfs_iext_remove(ip, current_ext, 1, 0);
 
        /* update reverse mapping. rmap functions merge the rmaps for us */
@@ -5783,7 +5708,8 @@ update_current_ext:
                *logflags |= XFS_ILOG_DEXT;
        }
 
-       xfs_iext_update_extent(ifp, *current_ext, &new);
+       xfs_iext_update_extent(ip, xfs_bmap_fork_to_state(whichfork),
+                       *current_ext, &new);
 
        if (direction == SHIFT_LEFT)
                (*current_ext)++;
@@ -6030,7 +5956,8 @@ xfs_bmap_split_extent_at(
        }
 
        got.br_blockcount = gotblkcnt;
-       xfs_iext_update_extent(ifp, current_ext, &got);
+       xfs_iext_update_extent(ip, xfs_bmap_fork_to_state(whichfork),
+                       current_ext, &got);
 
        logflags = XFS_ILOG_CORE;
        if (cur) {
index 31840ca..7f40f53 100644 (file)
@@ -2023,12 +2023,17 @@ xfs_iext_get_extent(
 
 void
 xfs_iext_update_extent(
-       struct xfs_ifork        *ifp,
+       struct xfs_inode        *ip,
+       int                     state,
        xfs_extnum_t            idx,
        struct xfs_bmbt_irec    *gotp)
 {
+       struct xfs_ifork        *ifp = xfs_iext_state_to_fork(ip, state);
+
        ASSERT(idx >= 0);
        ASSERT(idx < xfs_iext_count(ifp));
 
+       trace_xfs_bmap_pre_update(ip, idx, state, _RET_IP_);
        xfs_bmbt_set_all(xfs_iext_get_ext(ifp, idx), gotp);
+       trace_xfs_bmap_post_update(ip, idx, state, _RET_IP_);
 }
index 11af705..6750f04 100644 (file)
@@ -187,8 +187,8 @@ bool                xfs_iext_lookup_extent(struct xfs_inode *ip,
                        xfs_extnum_t *idxp, struct xfs_bmbt_irec *gotp);
 bool           xfs_iext_get_extent(struct xfs_ifork *ifp, xfs_extnum_t idx,
                        struct xfs_bmbt_irec *gotp);
-void           xfs_iext_update_extent(struct xfs_ifork *ifp, xfs_extnum_t idx,
-                       struct xfs_bmbt_irec *gotp);
+void           xfs_iext_update_extent(struct xfs_inode *ip, int state,
+                       xfs_extnum_t idx, struct xfs_bmbt_irec *gotp);
 
 extern struct kmem_zone        *xfs_ifork_zone;