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

xfs: don't check agf_btreeblks on pre-lazysbcount filesystems



The AGF free space btree block counter wasn't added until the
lazysbcount feature was added to XFS midway through the life of the V4
format, so ignore the field when checking.  Online AGF repair requires
rmapbt, so it doesn't need the feature check.

Signed-off-by: default avatarDarrick J. Wong <djwong@kernel.org>
Reviewed-by: default avatarDave Chinner <dchinner@redhat.com>
parent 1aec7c3d
Loading
Loading
Loading
Loading
+6 −1
Original line number Diff line number Diff line
@@ -416,6 +416,10 @@ xchk_agf_xref_btreeblks(
	xfs_agblock_t		btreeblks;
	int			error;

	/* agf_btreeblks didn't exist before lazysbcount */
	if (!xfs_sb_version_haslazysbcount(&sc->mp->m_sb))
		return;

	/* Check agf_rmap_blocks; set up for agf_btreeblks check */
	if (sc->sa.rmap_cur) {
		error = xfs_btree_count_blocks(sc->sa.rmap_cur, &blocks);
@@ -581,7 +585,8 @@ xchk_agf(
		xchk_block_set_corrupt(sc, sc->sa.agf_bp);
	if (pag->pagf_flcount != be32_to_cpu(agf->agf_flcount))
		xchk_block_set_corrupt(sc, sc->sa.agf_bp);
	if (pag->pagf_btreeblks != be32_to_cpu(agf->agf_btreeblks))
	if (xfs_sb_version_haslazysbcount(&sc->mp->m_sb) &&
	    pag->pagf_btreeblks != be32_to_cpu(agf->agf_btreeblks))
		xchk_block_set_corrupt(sc, sc->sa.agf_bp);
	xfs_perag_put(pag);

+2 −1
Original line number Diff line number Diff line
@@ -182,6 +182,7 @@ xchk_fscount_aggregate_agcounts(
		/* Add up the free/freelist/bnobt/cntbt blocks */
		fsc->fdblocks += pag->pagf_freeblks;
		fsc->fdblocks += pag->pagf_flcount;
		if (xfs_sb_version_haslazysbcount(&sc->mp->m_sb))
			fsc->fdblocks += pag->pagf_btreeblks;

		/*