xfs: calculate RT bitmap and summary blocks based on sb_rextents
authorChristoph Hellwig <hch@lst.de>
Mon, 4 Nov 2024 04:19:12 +0000 (20:19 -0800)
committerDarrick J. Wong <djwong@kernel.org>
Tue, 5 Nov 2024 21:38:37 +0000 (13:38 -0800)
Use the on-disk rextents to calculate the bitmap and summary blocks
instead of the calculated one so that we can refactor the helpers for
calculating them.

As the RT bitmap and summary scrubbers already check that sb_rextents
match the block count this does not change coverage of the scrubber.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Darrick J. Wong <djwong@kernel.org>
Signed-off-by: Darrick J. Wong <djwong@kernel.org>
fs/xfs/scrub/rtbitmap.c
fs/xfs/scrub/rtsummary.c

index c68de97..5b42e01 100644 (file)
@@ -67,7 +67,8 @@ xchk_setup_rtbitmap(
        if (mp->m_sb.sb_rblocks) {
                rtb->rextents = xfs_rtb_to_rtx(mp, mp->m_sb.sb_rblocks);
                rtb->rextslog = xfs_compute_rextslog(rtb->rextents);
-               rtb->rbmblocks = xfs_rtbitmap_blockcount(mp, rtb->rextents);
+               rtb->rbmblocks = xfs_rtbitmap_blockcount(mp,
+                               mp->m_sb.sb_rextents);
        }
 
        return 0;
index cda5e83..7c2b6ad 100644 (file)
@@ -105,9 +105,10 @@ xchk_setup_rtsummary(
                int             rextslog;
 
                rts->rextents = xfs_rtb_to_rtx(mp, mp->m_sb.sb_rblocks);
-               rextslog = xfs_compute_rextslog(rts->rextents);
+               rextslog = xfs_compute_rextslog(mp->m_sb.sb_rextents);
                rts->rsumlevels = rextslog + 1;
-               rts->rbmblocks = xfs_rtbitmap_blockcount(mp, rts->rextents);
+               rts->rbmblocks = xfs_rtbitmap_blockcount(mp,
+                               mp->m_sb.sb_rextents);
                rts->rsumblocks = xfs_rtsummary_blockcount(mp, rts->rsumlevels,
                                rts->rbmblocks);
        }