xfs: create helpers to deal with rounding xfs_fileoff_t to rtx boundaries
authorDarrick J. Wong <djwong@kernel.org>
Mon, 4 Nov 2024 04:19:32 +0000 (20:19 -0800)
committerDarrick J. Wong <djwong@kernel.org>
Tue, 5 Nov 2024 21:38:43 +0000 (13:38 -0800)
We're about to segment xfs_rtblock_t addresses, so we must create
type-specific helpers to do rt extent rounding of file block offsets
because the rtb helpers soon will not do the right thing there.

Signed-off-by: Darrick J. Wong <djwong@kernel.org>
Reviewed-by: Christoph Hellwig <hch@lst.de>
fs/xfs/libxfs/xfs_rtbitmap.h
fs/xfs/xfs_bmap_util.c

index 7be7649..dc2b8be 100644 (file)
@@ -135,13 +135,22 @@ xfs_rtb_roundup_rtx(
        return roundup_64(rtbno, mp->m_sb.sb_rextsize);
 }
 
-/* Round this rtblock down to the nearest rt extent size. */
+/* Round this file block offset up to the nearest rt extent size. */
 static inline xfs_rtblock_t
-xfs_rtb_rounddown_rtx(
+xfs_fileoff_roundup_rtx(
        struct xfs_mount        *mp,
-       xfs_rtblock_t           rtbno)
+       xfs_fileoff_t           off)
+{
+       return roundup_64(off, mp->m_sb.sb_rextsize);
+}
+
+/* Round this file block offset down to the nearest rt extent size. */
+static inline xfs_rtblock_t
+xfs_fileoff_rounddown_rtx(
+       struct xfs_mount        *mp,
+       xfs_fileoff_t           off)
 {
-       return rounddown_64(rtbno, mp->m_sb.sb_rextsize);
+       return rounddown_64(off, mp->m_sb.sb_rextsize);
 }
 
 /* Convert an rt extent number to a file block offset in the rt bitmap file. */
index bc53f5c..1fe6767 100644 (file)
@@ -541,7 +541,7 @@ xfs_can_free_eofblocks(
         */
        end_fsb = XFS_B_TO_FSB(mp, (xfs_ufsize_t)XFS_ISIZE(ip));
        if (xfs_inode_has_bigrtalloc(ip))
-               end_fsb = xfs_rtb_roundup_rtx(mp, end_fsb);
+               end_fsb = xfs_fileoff_roundup_rtx(mp, end_fsb);
        last_fsb = XFS_B_TO_FSB(mp, mp->m_super->s_maxbytes);
        if (last_fsb <= end_fsb)
                return false;
@@ -863,8 +863,8 @@ xfs_free_file_space(
 
        /* We can only free complete realtime extents. */
        if (xfs_inode_has_bigrtalloc(ip)) {
-               startoffset_fsb = xfs_rtb_roundup_rtx(mp, startoffset_fsb);
-               endoffset_fsb = xfs_rtb_rounddown_rtx(mp, endoffset_fsb);
+               startoffset_fsb = xfs_fileoff_roundup_rtx(mp, startoffset_fsb);
+               endoffset_fsb = xfs_fileoff_rounddown_rtx(mp, endoffset_fsb);
        }
 
        /*