diff options
Diffstat (limited to 'fs/xfs/xfs_alloc_btree.c')
| -rw-r--r-- | fs/xfs/xfs_alloc_btree.c | 9 | 
1 files changed, 7 insertions, 2 deletions
diff --git a/fs/xfs/xfs_alloc_btree.c b/fs/xfs/xfs_alloc_btree.c index adbd9141aea..b726e10d2c1 100644 --- a/fs/xfs/xfs_alloc_btree.c +++ b/fs/xfs/xfs_alloc_btree.c @@ -61,12 +61,14 @@ xfs_allocbt_set_root(  	struct xfs_agf		*agf = XFS_BUF_TO_AGF(agbp);  	xfs_agnumber_t		seqno = be32_to_cpu(agf->agf_seqno);  	int			btnum = cur->bc_btnum; +	struct xfs_perag	*pag = xfs_perag_get(cur->bc_mp, seqno);  	ASSERT(ptr->s != 0);  	agf->agf_roots[btnum] = ptr->s;  	be32_add_cpu(&agf->agf_levels[btnum], inc); -	cur->bc_mp->m_perag[seqno].pagf_levels[btnum] += inc; +	pag->pagf_levels[btnum] += inc; +	xfs_perag_put(pag);  	xfs_alloc_log_agf(cur->bc_tp, agbp, XFS_AGF_ROOTS | XFS_AGF_LEVELS);  } @@ -150,6 +152,7 @@ xfs_allocbt_update_lastrec(  {  	struct xfs_agf		*agf = XFS_BUF_TO_AGF(cur->bc_private.a.agbp);  	xfs_agnumber_t		seqno = be32_to_cpu(agf->agf_seqno); +	struct xfs_perag	*pag;  	__be32			len;  	int			numrecs; @@ -193,7 +196,9 @@ xfs_allocbt_update_lastrec(  	}  	agf->agf_longest = len; -	cur->bc_mp->m_perag[seqno].pagf_longest = be32_to_cpu(len); +	pag = xfs_perag_get(cur->bc_mp, seqno); +	pag->pagf_longest = be32_to_cpu(len); +	xfs_perag_put(pag);  	xfs_alloc_log_agf(cur->bc_tp, cur->bc_private.a.agbp, XFS_AGF_LONGEST);  }  |