Commit e51987a1 authored by Darrick J. Wong's avatar Darrick J. Wong
Browse files

xfs: simplify usage of the rcur local variable in xfs_refcount_finish_one



Only update rcur when we know the final *pcur value.

Inspired-by: default avatarChristoph Hellwig <hch@lst.de>
[djwong: don't leave the caller with a dangling ref]
Signed-off-by: default avatarDarrick J. Wong <djwong@kernel.org>
Reviewed-by: default avatarChristoph Hellwig <hch@lst.de>
parent bac3f784
Loading
Loading
Loading
Loading
+3 −4
Original line number Diff line number Diff line
@@ -1341,7 +1341,7 @@ xfs_refcount_finish_one(
	struct xfs_btree_cur		**pcur)
{
	struct xfs_mount		*mp = tp->t_mountp;
	struct xfs_btree_cur		*rcur;
	struct xfs_btree_cur		*rcur = *pcur;
	struct xfs_buf			*agbp = NULL;
	int				error = 0;
	xfs_agblock_t			bno;
@@ -1359,7 +1359,6 @@ xfs_refcount_finish_one(
	 * If we haven't gotten a cursor or the cursor AG doesn't match
	 * the startblock, get one now.
	 */
	rcur = *pcur;
	if (rcur != NULL && rcur->bc_ag.pag != ri->ri_pag) {
		nr_ops = rcur->bc_refc.nr_ops;
		shape_changes = rcur->bc_refc.shape_changes;
@@ -1373,11 +1372,11 @@ xfs_refcount_finish_one(
		if (error)
			return error;

		rcur = xfs_refcountbt_init_cursor(mp, tp, agbp, ri->ri_pag);
		*pcur = rcur = xfs_refcountbt_init_cursor(mp, tp, agbp,
							  ri->ri_pag);
		rcur->bc_refc.nr_ops = nr_ops;
		rcur->bc_refc.shape_changes = shape_changes;
	}
	*pcur = rcur;

	switch (ri->ri_type) {
	case XFS_REFCOUNT_INCREASE: