diff options
author | Darrick J. Wong | 2018-01-16 18:53:09 -0800 |
---|---|---|
committer | Darrick J. Wong | 2018-01-17 21:00:46 -0800 |
commit | f6d5fc21fdc7137848a469e344f78fcc8b5c10ab (patch) | |
tree | df8ea108776d99b5621128c6a7d7c30425e75e87 /fs/xfs/scrub/bmap.c | |
parent | dbde19da96370670cfc4379ab2bfa8db6be42c2b (diff) |
xfs: cross-reference refcount btree during scrub
During metadata btree scrub, we should cross-reference with the
reference counts.
Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Reviewed-by: Dave Chinner <dchinner@redhat.com>
Diffstat (limited to 'fs/xfs/scrub/bmap.c')
-rw-r--r-- | fs/xfs/scrub/bmap.c | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/fs/xfs/scrub/bmap.c b/fs/xfs/scrub/bmap.c index 933e0b8be34f..7b2cf8fd1ce0 100644 --- a/fs/xfs/scrub/bmap.c +++ b/fs/xfs/scrub/bmap.c @@ -37,6 +37,7 @@ #include "xfs_bmap_util.h" #include "xfs_bmap_btree.h" #include "xfs_rmap.h" +#include "xfs_refcount.h" #include "scrub/xfs_scrub.h" #include "scrub/scrub.h" #include "scrub/common.h" @@ -273,6 +274,20 @@ xfs_scrub_bmap_extent_xref( xfs_scrub_xref_is_used_space(info->sc, agbno, len); xfs_scrub_xref_is_not_inode_chunk(info->sc, agbno, len); xfs_scrub_bmap_xref_rmap(info, irec, agbno); + switch (info->whichfork) { + case XFS_DATA_FORK: + if (xfs_is_reflink_inode(info->sc->ip)) + break; + /* fall through */ + case XFS_ATTR_FORK: + xfs_scrub_xref_is_not_shared(info->sc, agbno, + irec->br_blockcount); + break; + case XFS_COW_FORK: + xfs_scrub_xref_is_cow_staging(info->sc, agbno, + irec->br_blockcount); + break; + } xfs_scrub_ag_free(info->sc, &info->sc->sa); } |