diff options
Diffstat (limited to 'fs/xfs/scrub/agheader.c')
| -rw-r--r-- | fs/xfs/scrub/agheader.c | 30 | 
1 files changed, 22 insertions, 8 deletions
diff --git a/fs/xfs/scrub/agheader.c b/fs/xfs/scrub/agheader.c index 4dd52b15f09c..6c6e5eba42c8 100644 --- a/fs/xfs/scrub/agheader.c +++ b/fs/xfs/scrub/agheader.c @@ -1,7 +1,7 @@ -// SPDX-License-Identifier: GPL-2.0+ +// SPDX-License-Identifier: GPL-2.0-or-later  /* - * Copyright (C) 2017 Oracle.  All Rights Reserved. - * Author: Darrick J. Wong <[email protected]> + * Copyright (C) 2017-2023 Oracle.  All Rights Reserved. + * Author: Darrick J. Wong <[email protected]>   */  #include "xfs.h"  #include "xfs_fs.h" @@ -18,6 +18,15 @@  #include "scrub/scrub.h"  #include "scrub/common.h" +int +xchk_setup_agheader( +	struct xfs_scrub	*sc) +{ +	if (xchk_need_intent_drain(sc)) +		xchk_fsgates_enable(sc, XCHK_FSGATES_DRAIN); +	return xchk_setup_fs(sc); +} +  /* Superblock */  /* Cross-reference with the other btrees. */ @@ -42,8 +51,9 @@ xchk_superblock_xref(  	xchk_xref_is_used_space(sc, agbno, 1);  	xchk_xref_is_not_inode_chunk(sc, agbno, 1); -	xchk_xref_is_owned_by(sc, agbno, 1, &XFS_RMAP_OINFO_FS); +	xchk_xref_is_only_owned_by(sc, agbno, 1, &XFS_RMAP_OINFO_FS);  	xchk_xref_is_not_shared(sc, agbno, 1); +	xchk_xref_is_not_cow_staging(sc, agbno, 1);  	/* scrub teardown will take care of sc->sa for us */  } @@ -505,9 +515,10 @@ xchk_agf_xref(  	xchk_agf_xref_freeblks(sc);  	xchk_agf_xref_cntbt(sc);  	xchk_xref_is_not_inode_chunk(sc, agbno, 1); -	xchk_xref_is_owned_by(sc, agbno, 1, &XFS_RMAP_OINFO_FS); +	xchk_xref_is_only_owned_by(sc, agbno, 1, &XFS_RMAP_OINFO_FS);  	xchk_agf_xref_btreeblks(sc);  	xchk_xref_is_not_shared(sc, agbno, 1); +	xchk_xref_is_not_cow_staging(sc, agbno, 1);  	xchk_agf_xref_refcblks(sc);  	/* scrub teardown will take care of sc->sa for us */ @@ -633,8 +644,9 @@ xchk_agfl_block_xref(  	xchk_xref_is_used_space(sc, agbno, 1);  	xchk_xref_is_not_inode_chunk(sc, agbno, 1); -	xchk_xref_is_owned_by(sc, agbno, 1, &XFS_RMAP_OINFO_AG); +	xchk_xref_is_only_owned_by(sc, agbno, 1, &XFS_RMAP_OINFO_AG);  	xchk_xref_is_not_shared(sc, agbno, 1); +	xchk_xref_is_not_cow_staging(sc, agbno, 1);  }  /* Scrub an AGFL block. */ @@ -689,8 +701,9 @@ xchk_agfl_xref(  	xchk_xref_is_used_space(sc, agbno, 1);  	xchk_xref_is_not_inode_chunk(sc, agbno, 1); -	xchk_xref_is_owned_by(sc, agbno, 1, &XFS_RMAP_OINFO_FS); +	xchk_xref_is_only_owned_by(sc, agbno, 1, &XFS_RMAP_OINFO_FS);  	xchk_xref_is_not_shared(sc, agbno, 1); +	xchk_xref_is_not_cow_staging(sc, agbno, 1);  	/*  	 * Scrub teardown will take care of sc->sa for us.  Leave sc->sa @@ -844,8 +857,9 @@ xchk_agi_xref(  	xchk_xref_is_used_space(sc, agbno, 1);  	xchk_xref_is_not_inode_chunk(sc, agbno, 1);  	xchk_agi_xref_icounts(sc); -	xchk_xref_is_owned_by(sc, agbno, 1, &XFS_RMAP_OINFO_FS); +	xchk_xref_is_only_owned_by(sc, agbno, 1, &XFS_RMAP_OINFO_FS);  	xchk_xref_is_not_shared(sc, agbno, 1); +	xchk_xref_is_not_cow_staging(sc, agbno, 1);  	xchk_agi_xref_fiblocks(sc);  	/* scrub teardown will take care of sc->sa for us */  |