]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
xfs: create rt extent rounding helpers for realtime extent blocks
authorDarrick J. Wong <djwong@kernel.org>
Mon, 16 Oct 2023 16:38:28 +0000 (09:38 -0700)
committerDarrick J. Wong <djwong@kernel.org>
Tue, 17 Oct 2023 23:26:25 +0000 (16:26 -0700)
Create a pair of functions to round rtblock numbers up or down to the
nearest rt extent.

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 ff901bf3d1ee51f5e60910e15f683e998177d2aa..ecf5645dd67091e380cc0cd6b8f3efc0d0680f94 100644 (file)
@@ -84,6 +84,24 @@ xfs_rtb_to_rtxup(
        return rtbno;
 }
 
+/* Round this rtblock up to the nearest rt extent size. */
+static inline xfs_rtblock_t
+xfs_rtb_roundup_rtx(
+       struct xfs_mount        *mp,
+       xfs_rtblock_t           rtbno)
+{
+       return roundup_64(rtbno, mp->m_sb.sb_rextsize);
+}
+
+/* Round this rtblock down to the nearest rt extent size. */
+static inline xfs_rtblock_t
+xfs_rtb_rounddown_rtx(
+       struct xfs_mount        *mp,
+       xfs_rtblock_t           rtbno)
+{
+       return rounddown_64(rtbno, mp->m_sb.sb_rextsize);
+}
+
 /*
  * Functions for walking free space rtextents in the realtime bitmap.
  */
index 25a03c1276e37e9db2d1d2a543d9e95bd268b7b8..c640dfc2d00f61747b50bd82c416518000ef6f91 100644 (file)
@@ -684,7 +684,7 @@ xfs_can_free_eofblocks(
         */
        end_fsb = XFS_B_TO_FSB(mp, (xfs_ufsize_t)XFS_ISIZE(ip));
        if (XFS_IS_REALTIME_INODE(ip) && mp->m_sb.sb_rextsize > 1)
-               end_fsb = roundup_64(end_fsb, mp->m_sb.sb_rextsize);
+               end_fsb = xfs_rtb_roundup_rtx(mp, end_fsb);
        last_fsb = XFS_B_TO_FSB(mp, mp->m_super->s_maxbytes);
        if (last_fsb <= end_fsb)
                return false;
@@ -983,10 +983,8 @@ xfs_free_file_space(
 
        /* We can only free complete realtime extents. */
        if (XFS_IS_REALTIME_INODE(ip) && mp->m_sb.sb_rextsize > 1) {
-               startoffset_fsb = roundup_64(startoffset_fsb,
-                                            mp->m_sb.sb_rextsize);
-               endoffset_fsb = rounddown_64(endoffset_fsb,
-                                            mp->m_sb.sb_rextsize);
+               startoffset_fsb = xfs_rtb_roundup_rtx(mp, startoffset_fsb);
+               endoffset_fsb = xfs_rtb_rounddown_rtx(mp, endoffset_fsb);
        }
 
        /*