xfs: fix getfsmap reporting past the last rt extent
authorDarrick J. Wong <djwong@kernel.org>
Fri, 30 Jun 2023 00:39:44 +0000 (17:39 -0700)
committerDarrick J. Wong <djwong@kernel.org>
Sun, 2 Jul 2023 16:26:18 +0000 (09:26 -0700)
The realtime section ends at the last rt extent.  If the user configures
the rt geometry with an extent size that is not an integer factor of the
number of rt blocks, it's possible for there to be rt blocks past the
end of the last rt extent.  These tail blocks cannot ever be allocated
and will cause corruption reports if the last extent coincides with the
end of an rt bitmap block, so do not report consider them for the
GETFSMAP output.

Signed-off-by: Darrick J. Wong <djwong@kernel.org>
Reviewed-by: Dave Chinner <dchinner@redhat.com>
fs/xfs/xfs_fsmap.c

index 901918116d3d8f73237e5d2d0176cb0209ec7380..6bd6ab56ca9fe7284f94d20c16e31752d47bc5c9 100644 (file)
@@ -529,7 +529,7 @@ __xfs_getfsmap_rtdev(
        uint64_t                        eofs;
        int                             error = 0;
 
-       eofs = XFS_FSB_TO_BB(mp, mp->m_sb.sb_rblocks);
+       eofs = XFS_FSB_TO_BB(mp, mp->m_sb.sb_rextents * mp->m_sb.sb_rextsize);
        if (keys[0].fmr_physical >= eofs)
                return 0;
        start_rtb = XFS_BB_TO_FSBT(mp,