]> git.ipfire.org Git - thirdparty/xfsprogs-dev.git/commitdiff
xfs: convert the rtbitmap block and bit macros to static inline functions
authorDarrick J. Wong <djwong@kernel.org>
Mon, 12 Feb 2024 14:25:20 +0000 (15:25 +0100)
committerCarlos Maiolino <cem@kernel.org>
Thu, 15 Feb 2024 11:56:43 +0000 (12:56 +0100)
Source kernel commit: 90d98a6ada1da0f8797ff3f5adafd175dd8c0a81

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>
Signed-off-by: Carlos Maiolino <cem@kernel.org>
libxfs/xfs_format.h
libxfs/xfs_rtbitmap.c
libxfs/xfs_rtbitmap.h

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 48e709a28e76aa4d2ffed8df66cccd9ad7f14166..540cb1481813096a7113e8a6dae3492b92df9f17 100644 (file)
@@ -109,12 +109,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;
@@ -123,7 +123,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;
@@ -284,12 +284,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;
@@ -298,7 +298,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;
@@ -545,12 +545,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.
         */
@@ -562,7 +562,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));
        /*
@@ -728,7 +728,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;
                }
@@ -740,7 +740,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;
                }
@@ -751,7 +751,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;
 }
 
@@ -779,12 +779,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.
         */
@@ -796,7 +796,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.
  */