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

xfs: update sb field checks when metadir is turned on



When metadir is enabled, we want to check the two new rtgroups fields,
and we don't want to check the old inumbers that are now in the metadir.

Signed-off-by: default avatarDarrick J. Wong <djwong@kernel.org>
Reviewed-by: default avatarChristoph Hellwig <hch@lst.de>
parent edc038f7
Loading
Loading
Loading
Loading
+24 −12
Original line number Diff line number Diff line
@@ -147,13 +147,13 @@ xchk_superblock(
	if (xfs_has_metadir(sc->mp)) {
		if (sb->sb_metadirino != cpu_to_be64(mp->m_sb.sb_metadirino))
			xchk_block_set_preen(sc, bp);
	}

	} else {
		if (sb->sb_rbmino != cpu_to_be64(mp->m_sb.sb_rbmino))
			xchk_block_set_preen(sc, bp);

		if (sb->sb_rsumino != cpu_to_be64(mp->m_sb.sb_rsumino))
			xchk_block_set_preen(sc, bp);
	}

	if (sb->sb_rextsize != cpu_to_be32(mp->m_sb.sb_rextsize))
		xchk_block_set_corrupt(sc, bp);
@@ -229,11 +229,13 @@ xchk_superblock(
	 * sb_icount, sb_ifree, sb_fdblocks, sb_frexents
	 */

	if (!xfs_has_metadir(mp)) {
		if (sb->sb_uquotino != cpu_to_be64(mp->m_sb.sb_uquotino))
			xchk_block_set_preen(sc, bp);

		if (sb->sb_gquotino != cpu_to_be64(mp->m_sb.sb_gquotino))
			xchk_block_set_preen(sc, bp);
	}

	/*
	 * Skip the quota flags since repair will force quotacheck.
@@ -349,8 +351,10 @@ xchk_superblock(
		if (sb->sb_spino_align != cpu_to_be32(mp->m_sb.sb_spino_align))
			xchk_block_set_corrupt(sc, bp);

		if (!xfs_has_metadir(mp)) {
			if (sb->sb_pquotino != cpu_to_be64(mp->m_sb.sb_pquotino))
				xchk_block_set_preen(sc, bp);
		}

		/* Don't care about sb_lsn */
	}
@@ -361,6 +365,14 @@ xchk_superblock(
			xchk_block_set_corrupt(sc, bp);
	}

	if (xfs_has_metadir(mp)) {
		if (sb->sb_rgcount != cpu_to_be32(mp->m_sb.sb_rgcount))
			xchk_block_set_corrupt(sc, bp);

		if (sb->sb_rgextents != cpu_to_be32(mp->m_sb.sb_rgextents))
			xchk_block_set_corrupt(sc, bp);
	}

	/* Everything else must be zero. */
	if (memchr_inv(sb + 1, 0,
			BBTOB(bp->b_length) - sizeof(struct xfs_dsb)))