xfs: factor btree block freeing into a helper

Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Brian Foster <bfoster@redhat.com>
Signed-off-by: Dave Chinner <david@fromorbit.com>
This commit is contained in:
Christoph Hellwig 2016-02-08 14:58:07 +11:00 committed by Dave Chinner
parent 196328ec97
commit c46ee8ad78
1 changed files with 16 additions and 7 deletions

View File

@ -294,6 +294,19 @@ xfs_btree_sblock_verify_crc(
return true;
}
static int
xfs_btree_free_block(
struct xfs_btree_cur *cur,
struct xfs_buf *bp)
{
int error;
error = cur->bc_ops->free_block(cur, bp);
if (!error)
XFS_BTREE_STATS_INC(cur, free);
return error;
}
/*
* Delete the btree cursor.
*/
@ -3282,12 +3295,11 @@ xfs_btree_kill_iroot(
#endif
xfs_btree_copy_ptrs(cur, pp, cpp, numrecs);
error = cur->bc_ops->free_block(cur, cbp);
error = xfs_btree_free_block(cur, cbp);
if (error) {
XFS_BTREE_TRACE_CURSOR(cur, XBT_ERROR);
return error;
}
XFS_BTREE_STATS_INC(cur, free);
cur->bc_bufs[level - 1] = NULL;
be16_add_cpu(&block->bb_level, -1);
@ -3320,14 +3332,12 @@ xfs_btree_kill_root(
*/
cur->bc_ops->set_root(cur, newroot, -1);
error = cur->bc_ops->free_block(cur, bp);
error = xfs_btree_free_block(cur, bp);
if (error) {
XFS_BTREE_TRACE_CURSOR(cur, XBT_ERROR);
return error;
}
XFS_BTREE_STATS_INC(cur, free);
cur->bc_bufs[level] = NULL;
cur->bc_ra[level] = 0;
cur->bc_nlevels--;
@ -3833,10 +3843,9 @@ xfs_btree_delrec(
}
/* Free the deleted block. */
error = cur->bc_ops->free_block(cur, rbp);
error = xfs_btree_free_block(cur, rbp);
if (error)
goto error0;
XFS_BTREE_STATS_INC(cur, free);
/*
* If we joined with the left neighbor, set the buffer in the