]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
xfs: convert the rtbitmap block and bit macros to static inline functions
authorDarrick J. Wong <djwong@kernel.org>
Mon, 16 Oct 2023 16:44:13 +0000 (09:44 -0700)
committerDarrick J. Wong <djwong@kernel.org>
Tue, 17 Oct 2023 23:26:25 +0000 (16:26 -0700)
Replace these macros with typechecked helper functions.  Eventually
we're going to add more logic to the helpers and it'll be easier if we
don't have to macro it up.

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

index 20acb8573d7a284018971a33638ba7c390dce449..0e2ee820240259b600b1a082c2f547fc585b7255 100644 (file)
@@ -1155,11 +1155,6 @@ static inline bool xfs_dinode_has_large_extent_counts(
        ((xfs_suminfo_t *)((bp)->b_addr + \
                (((so) * (uint)sizeof(xfs_suminfo_t)) & XFS_BLOCKMASK(mp))))
 
-#define        XFS_BITTOBLOCK(mp,bi)   ((bi) >> (mp)->m_blkbit_log)
-#define        XFS_BLOCKTOBIT(mp,bb)   ((bb) << (mp)->m_blkbit_log)
-#define        XFS_BITTOWORD(mp,bi)    \
-       ((int)(((bi) >> XFS_NBWORDLOG) & XFS_BLOCKWMASK(mp)))
-
 #define        XFS_RTMIN(a,b)  ((a) < (b) ? (a) : (b))
 #define        XFS_RTMAX(a,b)  ((a) > (b) ? (a) : (b))
 
index 383c6437e04264535cb57861e86f6e23ca875c74..9ef336d22861cf8e717296bd59bf80d4b55a80f7 100644 (file)
@@ -111,12 +111,12 @@ xfs_rtfind_back(
        xfs_rtword_t    mask;           /* mask of relevant bits for value */
        xfs_rtword_t    want;           /* mask for "good" values */
        xfs_rtword_t    wdiff;          /* difference from wanted value */
-       int             word;           /* word number in the buffer */
+       unsigned int    word;           /* word number in the buffer */
 
        /*
         * Compute and read in starting bitmap block for starting block.
         */
-       block = XFS_BITTOBLOCK(mp, start);
+       block = xfs_rtx_to_rbmblock(mp, start);
        error = xfs_rtbuf_get(mp, tp, block, 0, &bp);
        if (error) {
                return error;
@@ -125,7 +125,7 @@ xfs_rtfind_back(
        /*
         * Get the first word's index & point to it.
         */
-       word = XFS_BITTOWORD(mp, start);
+       word = xfs_rtx_to_rbmword(mp, start);
        b = &bufp[word];
        bit = (int)(start & (XFS_NBWORD - 1));
        len = start - limit + 1;
@@ -286,12 +286,12 @@ xfs_rtfind_forw(
        xfs_rtword_t    mask;           /* mask of relevant bits for value */
        xfs_rtword_t    want;           /* mask for "good" values */
        xfs_rtword_t    wdiff;          /* difference from wanted value */
-       int             word;           /* word number in the buffer */
+       unsigned int    word;           /* word number in the buffer */
 
        /*
         * Compute and read in starting bitmap block for starting block.
         */
-       block = XFS_BITTOBLOCK(mp, start);
+       block = xfs_rtx_to_rbmblock(mp, start);
        error = xfs_rtbuf_get(mp, tp, block, 0, &bp);
        if (error) {
                return error;
@@ -300,7 +300,7 @@ xfs_rtfind_forw(
        /*
         * Get the first word's index & point to it.
         */
-       word = XFS_BITTOWORD(mp, start);
+       word = xfs_rtx_to_rbmword(mp, start);
        b = &bufp[word];
        bit = (int)(start & (XFS_NBWORD - 1));
        len = limit - start + 1;
@@ -547,12 +547,12 @@ xfs_rtmodify_range(
        int             i;              /* current bit number rel. to start */
        int             lastbit;        /* last useful bit in word */
        xfs_rtword_t    mask;           /* mask o frelevant bits for value */
-       int             word;           /* word number in the buffer */
+       unsigned int    word;           /* word number in the buffer */
 
        /*
         * Compute starting bitmap block number.
         */
-       block = XFS_BITTOBLOCK(mp, start);
+       block = xfs_rtx_to_rbmblock(mp, start);
        /*
         * Read the bitmap block, and point to its data.
         */
@@ -564,7 +564,7 @@ xfs_rtmodify_range(
        /*
         * Compute the starting word's address, and starting bit.
         */
-       word = XFS_BITTOWORD(mp, start);
+       word = xfs_rtx_to_rbmword(mp, start);
        first = b = &bufp[word];
        bit = (int)(start & (XFS_NBWORD - 1));
        /*
@@ -730,7 +730,7 @@ xfs_rtfree_range(
        if (preblock < start) {
                error = xfs_rtmodify_summary(mp, tp,
                        XFS_RTBLOCKLOG(start - preblock),
-                       XFS_BITTOBLOCK(mp, preblock), -1, rbpp, rsb);
+                       xfs_rtx_to_rbmblock(mp, preblock), -1, rbpp, rsb);
                if (error) {
                        return error;
                }
@@ -742,7 +742,7 @@ xfs_rtfree_range(
        if (postblock > end) {
                error = xfs_rtmodify_summary(mp, tp,
                        XFS_RTBLOCKLOG(postblock - end),
-                       XFS_BITTOBLOCK(mp, end + 1), -1, rbpp, rsb);
+                       xfs_rtx_to_rbmblock(mp, end + 1), -1, rbpp, rsb);
                if (error) {
                        return error;
                }
@@ -753,7 +753,7 @@ xfs_rtfree_range(
         */
        error = xfs_rtmodify_summary(mp, tp,
                XFS_RTBLOCKLOG(postblock + 1 - preblock),
-               XFS_BITTOBLOCK(mp, preblock), 1, rbpp, rsb);
+               xfs_rtx_to_rbmblock(mp, preblock), 1, rbpp, rsb);
        return error;
 }
 
@@ -781,12 +781,12 @@ xfs_rtcheck_range(
        xfs_rtxnum_t    lastbit;        /* last useful bit in word */
        xfs_rtword_t    mask;           /* mask of relevant bits for value */
        xfs_rtword_t    wdiff;          /* difference from wanted value */
-       int             word;           /* word number in the buffer */
+       unsigned int    word;           /* word number in the buffer */
 
        /*
         * Compute starting bitmap block number
         */
-       block = XFS_BITTOBLOCK(mp, start);
+       block = xfs_rtx_to_rbmblock(mp, start);
        /*
         * Read the bitmap block.
         */
@@ -798,7 +798,7 @@ xfs_rtcheck_range(
        /*
         * Compute the starting word's address, and starting bit.
         */
-       word = XFS_BITTOWORD(mp, start);
+       word = xfs_rtx_to_rbmword(mp, start);
        b = &bufp[word];
        bit = (int)(start & (XFS_NBWORD - 1));
        /*
index 3686a53e0aed8bdad6412d7593411321de53bf1d..5c4325702cb104c10bcfdc18ae9dc83dd12e85c8 100644 (file)
@@ -131,6 +131,33 @@ xfs_rtb_rounddown_rtx(
        return rounddown_64(rtbno, mp->m_sb.sb_rextsize);
 }
 
+/* Convert an rt extent number to a file block offset in the rt bitmap file. */
+static inline xfs_fileoff_t
+xfs_rtx_to_rbmblock(
+       struct xfs_mount        *mp,
+       xfs_rtxnum_t            rtx)
+{
+       return rtx >> mp->m_blkbit_log;
+}
+
+/* Convert an rt extent number to a word offset within an rt bitmap block. */
+static inline unsigned int
+xfs_rtx_to_rbmword(
+       struct xfs_mount        *mp,
+       xfs_rtxnum_t            rtx)
+{
+       return (rtx >> XFS_NBWORDLOG) & XFS_BLOCKWMASK(mp);
+}
+
+/* Convert a file block offset in the rt bitmap file to an rt extent number. */
+static inline xfs_rtxnum_t
+xfs_rbmblock_to_rtx(
+       struct xfs_mount        *mp,
+       xfs_fileoff_t           rbmoff)
+{
+       return rbmoff << mp->m_blkbit_log;
+}
+
 /*
  * Functions for walking free space rtextents in the realtime bitmap.
  */
index d363286e8b72702025ef34f58e7c1ec46518b8b2..169b7b0dcaa5b8526e3cf88fa7664bc462ea20df 100644 (file)
@@ -130,7 +130,7 @@ xchk_rtsum_record_free(
                return error;
 
        /* Compute the relevant location in the rtsum file. */
-       rbmoff = XFS_BITTOBLOCK(mp, rec->ar_startext);
+       rbmoff = xfs_rtx_to_rbmblock(mp, rec->ar_startext);
        lenlog = XFS_RTBLOCKLOG(rec->ar_extcount);
        offs = XFS_SUMOFFS(mp, lenlog, rbmoff);
 
index e5a3200cea72e7a4adaff18291957d40fccb52dd..fdfb22baa6da692109f10d89ebd03bc374bfc700 100644 (file)
@@ -177,7 +177,7 @@ xfs_rtallocate_range(
         */
        error = xfs_rtmodify_summary(mp, tp,
                XFS_RTBLOCKLOG(postblock + 1 - preblock),
-               XFS_BITTOBLOCK(mp, preblock), -1, rbpp, rsb);
+               xfs_rtx_to_rbmblock(mp, preblock), -1, rbpp, rsb);
        if (error) {
                return error;
        }
@@ -188,7 +188,7 @@ xfs_rtallocate_range(
        if (preblock < start) {
                error = xfs_rtmodify_summary(mp, tp,
                        XFS_RTBLOCKLOG(start - preblock),
-                       XFS_BITTOBLOCK(mp, preblock), 1, rbpp, rsb);
+                       xfs_rtx_to_rbmblock(mp, preblock), 1, rbpp, rsb);
                if (error) {
                        return error;
                }
@@ -200,7 +200,7 @@ xfs_rtallocate_range(
        if (postblock > end) {
                error = xfs_rtmodify_summary(mp, tp,
                        XFS_RTBLOCKLOG(postblock - end),
-                       XFS_BITTOBLOCK(mp, end + 1), 1, rbpp, rsb);
+                       xfs_rtx_to_rbmblock(mp, end + 1), 1, rbpp, rsb);
                if (error) {
                        return error;
                }
@@ -261,8 +261,8 @@ xfs_rtallocate_extent_block(
         * Loop over all the extents starting in this bitmap block,
         * looking for one that's long enough.
         */
-       for (i = XFS_BLOCKTOBIT(mp, bbno), besti = -1, bestlen = 0,
-               end = XFS_BLOCKTOBIT(mp, bbno + 1) - 1;
+       for (i = xfs_rbmblock_to_rtx(mp, bbno), besti = -1, bestlen = 0,
+               end = xfs_rbmblock_to_rtx(mp, bbno + 1) - 1;
             i <= end;
             i++) {
                /* Make sure we don't scan off the end of the rt volume. */
@@ -489,7 +489,7 @@ xfs_rtallocate_extent_near(
                *rtx = r;
                return 0;
        }
-       bbno = XFS_BITTOBLOCK(mp, start);
+       bbno = xfs_rtx_to_rbmblock(mp, start);
        i = 0;
        ASSERT(minlen != 0);
        log2len = xfs_highbit32(minlen);
@@ -708,8 +708,8 @@ xfs_rtallocate_extent_size(
                         * allocator is beyond the next bitmap block,
                         * skip to that bitmap block.
                         */
-                       if (XFS_BITTOBLOCK(mp, n) > i + 1)
-                               i = XFS_BITTOBLOCK(mp, n) - 1;
+                       if (xfs_rtx_to_rbmblock(mp, n) > i + 1)
+                               i = xfs_rtx_to_rbmblock(mp, n) - 1;
                }
        }
        /*
@@ -771,8 +771,8 @@ xfs_rtallocate_extent_size(
                         * allocator is beyond the next bitmap block,
                         * skip to that bitmap block.
                         */
-                       if (XFS_BITTOBLOCK(mp, n) > i + 1)
-                               i = XFS_BITTOBLOCK(mp, n) - 1;
+                       if (xfs_rtx_to_rbmblock(mp, n) > i + 1)
+                               i = xfs_rtx_to_rbmblock(mp, n) - 1;
                }
        }
        /*