diff options
Diffstat (limited to 'fs/xfs/libxfs/xfs_ag.c')
| -rw-r--r-- | fs/xfs/libxfs/xfs_ag.c | 19 | 
1 files changed, 9 insertions, 10 deletions
diff --git a/fs/xfs/libxfs/xfs_ag.c b/fs/xfs/libxfs/xfs_ag.c index 1b078bbbf225..9b373a0c7aaf 100644 --- a/fs/xfs/libxfs/xfs_ag.c +++ b/fs/xfs/libxfs/xfs_ag.c @@ -495,10 +495,12 @@ xfs_freesp_init_recs(  		ASSERT(start >= mp->m_ag_prealloc_blocks);  		if (start != mp->m_ag_prealloc_blocks) {  			/* -			 * Modify first record to pad stripe align of log +			 * Modify first record to pad stripe align of log and +			 * bump the record count.  			 */  			arec->ar_blockcount = cpu_to_be32(start -  						mp->m_ag_prealloc_blocks); +			be16_add_cpu(&block->bb_numrecs, 1);  			nrec = arec + 1;  			/* @@ -509,7 +511,6 @@ xfs_freesp_init_recs(  					be32_to_cpu(arec->ar_startblock) +  					be32_to_cpu(arec->ar_blockcount));  			arec = nrec; -			be16_add_cpu(&block->bb_numrecs, 1);  		}  		/*  		 * Change record start to after the internal log @@ -518,15 +519,13 @@ xfs_freesp_init_recs(  	}  	/* -	 * Calculate the record block count and check for the case where -	 * the log might have consumed all available space in the AG. If -	 * so, reset the record count to 0 to avoid exposure of an invalid -	 * record start block. +	 * Calculate the block count of this record; if it is nonzero, +	 * increment the record count.  	 */  	arec->ar_blockcount = cpu_to_be32(id->agsize -  					  be32_to_cpu(arec->ar_startblock)); -	if (!arec->ar_blockcount) -		block->bb_numrecs = 0; +	if (arec->ar_blockcount) +		be16_add_cpu(&block->bb_numrecs, 1);  }  /* @@ -538,7 +537,7 @@ xfs_bnoroot_init(  	struct xfs_buf		*bp,  	struct aghdr_init_data	*id)  { -	xfs_btree_init_block(mp, bp, XFS_BTNUM_BNO, 0, 1, id->agno); +	xfs_btree_init_block(mp, bp, XFS_BTNUM_BNO, 0, 0, id->agno);  	xfs_freesp_init_recs(mp, bp, id);  } @@ -548,7 +547,7 @@ xfs_cntroot_init(  	struct xfs_buf		*bp,  	struct aghdr_init_data	*id)  { -	xfs_btree_init_block(mp, bp, XFS_BTNUM_CNT, 0, 1, id->agno); +	xfs_btree_init_block(mp, bp, XFS_BTNUM_CNT, 0, 0, id->agno);  	xfs_freesp_init_recs(mp, bp, id);  }  | 
