]> git.ipfire.org Git - thirdparty/xfsprogs-dev.git/commitdiff
xfs: convert rt extent numbers to xfs_rtxnum_t
authorDarrick J. Wong <djwong@kernel.org>
Mon, 12 Feb 2024 14:17:20 +0000 (15:17 +0100)
committerCarlos Maiolino <cem@kernel.org>
Thu, 15 Feb 2024 11:56:43 +0000 (12:56 +0100)
Source kernel commit: 2d5f216b77e33f9b503bd42998271da35d4b7055

Further disambiguate the xfs_rtblock_t uses by creating a new type,
xfs_rtxnum_t, to store the position of an extent within the realtime
section, in units of rtextents.

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_rtbitmap.c
libxfs/xfs_rtbitmap.h
libxfs/xfs_types.h

index 9a9097edd0f311b3ea972dd3a90fb54554251b77..4085f29b64181d02b18ea72d2ec24eaf3cb25be3 100644 (file)
@@ -93,9 +93,9 @@ int
 xfs_rtfind_back(
        xfs_mount_t     *mp,            /* file system mount point */
        xfs_trans_t     *tp,            /* transaction pointer */
-       xfs_rtblock_t   start,          /* starting block to look at */
-       xfs_rtblock_t   limit,          /* last block to look at */
-       xfs_rtblock_t   *rtblock)       /* out: start block found */
+       xfs_rtxnum_t    start,          /* starting rtext to look at */
+       xfs_rtxnum_t    limit,          /* last rtext to look at */
+       xfs_rtxnum_t    *rtx)           /* out: start rtext found */
 {
        xfs_rtword_t    *b;             /* current word in buffer */
        int             bit;            /* bit number in the word */
@@ -103,9 +103,9 @@ xfs_rtfind_back(
        struct xfs_buf  *bp;            /* buf for the block */
        xfs_rtword_t    *bufp;          /* starting word in buffer */
        int             error;          /* error value */
-       xfs_rtblock_t   firstbit;       /* first useful bit in the word */
-       xfs_rtblock_t   i;              /* current bit number rel. to start */
-       xfs_rtblock_t   len;            /* length of inspected area */
+       xfs_rtxnum_t    firstbit;       /* first useful bit in the word */
+       xfs_rtxnum_t    i;              /* current bit number rel. to start */
+       xfs_rtxnum_t    len;            /* length of inspected area */
        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 */
@@ -154,7 +154,7 @@ xfs_rtfind_back(
                         */
                        xfs_trans_brelse(tp, bp);
                        i = bit - XFS_RTHIBIT(wdiff);
-                       *rtblock = start - i + 1;
+                       *rtx = start - i + 1;
                        return 0;
                }
                i = bit - firstbit + 1;
@@ -200,7 +200,7 @@ xfs_rtfind_back(
                         */
                        xfs_trans_brelse(tp, bp);
                        i += XFS_NBWORD - 1 - XFS_RTHIBIT(wdiff);
-                       *rtblock = start - i + 1;
+                       *rtx = start - i + 1;
                        return 0;
                }
                i += XFS_NBWORD;
@@ -247,7 +247,7 @@ xfs_rtfind_back(
                         */
                        xfs_trans_brelse(tp, bp);
                        i += XFS_NBWORD - 1 - XFS_RTHIBIT(wdiff);
-                       *rtblock = start - i + 1;
+                       *rtx = start - i + 1;
                        return 0;
                } else
                        i = len;
@@ -256,7 +256,7 @@ xfs_rtfind_back(
         * No match, return that we scanned the whole area.
         */
        xfs_trans_brelse(tp, bp);
-       *rtblock = start - i + 1;
+       *rtx = start - i + 1;
        return 0;
 }
 
@@ -268,9 +268,9 @@ int
 xfs_rtfind_forw(
        xfs_mount_t     *mp,            /* file system mount point */
        xfs_trans_t     *tp,            /* transaction pointer */
-       xfs_rtblock_t   start,          /* starting block to look at */
-       xfs_rtblock_t   limit,          /* last block to look at */
-       xfs_rtblock_t   *rtblock)       /* out: start block found */
+       xfs_rtxnum_t    start,          /* starting rtext to look at */
+       xfs_rtxnum_t    limit,          /* last rtext to look at */
+       xfs_rtxnum_t    *rtx)           /* out: start rtext found */
 {
        xfs_rtword_t    *b;             /* current word in buffer */
        int             bit;            /* bit number in the word */
@@ -278,9 +278,9 @@ xfs_rtfind_forw(
        struct xfs_buf  *bp;            /* buf for the block */
        xfs_rtword_t    *bufp;          /* starting word in buffer */
        int             error;          /* error value */
-       xfs_rtblock_t   i;              /* current bit number rel. to start */
-       xfs_rtblock_t   lastbit;        /* last useful bit in the word */
-       xfs_rtblock_t   len;            /* length of inspected area */
+       xfs_rtxnum_t    i;              /* current bit number rel. to start */
+       xfs_rtxnum_t    lastbit;        /* last useful bit in the word */
+       xfs_rtxnum_t    len;            /* length of inspected area */
        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 */
@@ -328,7 +328,7 @@ xfs_rtfind_forw(
                         */
                        xfs_trans_brelse(tp, bp);
                        i = XFS_RTLOBIT(wdiff) - bit;
-                       *rtblock = start + i - 1;
+                       *rtx = start + i - 1;
                        return 0;
                }
                i = lastbit - bit;
@@ -373,7 +373,7 @@ xfs_rtfind_forw(
                         */
                        xfs_trans_brelse(tp, bp);
                        i += XFS_RTLOBIT(wdiff);
-                       *rtblock = start + i - 1;
+                       *rtx = start + i - 1;
                        return 0;
                }
                i += XFS_NBWORD;
@@ -417,7 +417,7 @@ xfs_rtfind_forw(
                         */
                        xfs_trans_brelse(tp, bp);
                        i += XFS_RTLOBIT(wdiff);
-                       *rtblock = start + i - 1;
+                       *rtx = start + i - 1;
                        return 0;
                } else
                        i = len;
@@ -426,7 +426,7 @@ xfs_rtfind_forw(
         * No match, return that we scanned the whole area.
         */
        xfs_trans_brelse(tp, bp);
-       *rtblock = start + i - 1;
+       *rtx = start + i - 1;
        return 0;
 }
 
@@ -531,7 +531,7 @@ int
 xfs_rtmodify_range(
        xfs_mount_t     *mp,            /* file system mount point */
        xfs_trans_t     *tp,            /* transaction pointer */
-       xfs_rtblock_t   start,          /* starting block to modify */
+       xfs_rtxnum_t    start,          /* starting rtext to modify */
        xfs_rtxlen_t    len,            /* length of extent to modify */
        int             val)            /* 1 for free, 0 for allocated */
 {
@@ -687,15 +687,15 @@ int
 xfs_rtfree_range(
        xfs_mount_t     *mp,            /* file system mount point */
        xfs_trans_t     *tp,            /* transaction pointer */
-       xfs_rtblock_t   start,          /* starting block to free */
+       xfs_rtxnum_t    start,          /* starting rtext to free */
        xfs_rtxlen_t    len,            /* length to free */
        struct xfs_buf  **rbpp,         /* in/out: summary block buffer */
        xfs_fileoff_t   *rsb)           /* in/out: summary block number */
 {
-       xfs_rtblock_t   end;            /* end of the freed extent */
+       xfs_rtxnum_t    end;            /* end of the freed extent */
        int             error;          /* error value */
-       xfs_rtblock_t   postblock;      /* first block freed > end */
-       xfs_rtblock_t   preblock;       /* first block freed < start */
+       xfs_rtxnum_t    postblock;      /* first rtext freed > end */
+       xfs_rtxnum_t    preblock;       /* first rtext freed < start */
 
        end = start + len - 1;
        /*
@@ -763,10 +763,10 @@ int
 xfs_rtcheck_range(
        xfs_mount_t     *mp,            /* file system mount point */
        xfs_trans_t     *tp,            /* transaction pointer */
-       xfs_rtblock_t   start,          /* starting block number of extent */
+       xfs_rtxnum_t    start,          /* starting rtext number of extent */
        xfs_rtxlen_t    len,            /* length of extent */
        int             val,            /* 1 for free, 0 for allocated */
-       xfs_rtblock_t   *new,           /* out: first block not matching */
+       xfs_rtxnum_t    *new,           /* out: first rtext not matching */
        int             *stat)          /* out: 1 for matches, 0 for not */
 {
        xfs_rtword_t    *b;             /* current word in buffer */
@@ -775,8 +775,8 @@ xfs_rtcheck_range(
        struct xfs_buf  *bp;            /* buf for the block */
        xfs_rtword_t    *bufp;          /* starting word in buffer */
        int             error;          /* error value */
-       xfs_rtblock_t   i;              /* current bit number rel. to start */
-       xfs_rtblock_t   lastbit;        /* last useful bit in word */
+       xfs_rtxnum_t    i;              /* current bit number rel. to start */
+       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 */
@@ -939,14 +939,14 @@ STATIC int                                /* error */
 xfs_rtcheck_alloc_range(
        xfs_mount_t     *mp,            /* file system mount point */
        xfs_trans_t     *tp,            /* transaction pointer */
-       xfs_rtblock_t   bno,            /* starting block number of extent */
+       xfs_rtxnum_t    start,          /* starting rtext number of extent */
        xfs_rtxlen_t    len)            /* length of extent */
 {
-       xfs_rtblock_t   new;            /* dummy for xfs_rtcheck_range */
+       xfs_rtxnum_t    new;            /* dummy for xfs_rtcheck_range */
        int             stat;
        int             error;
 
-       error = xfs_rtcheck_range(mp, tp, bno, len, 0, &new, &stat);
+       error = xfs_rtcheck_range(mp, tp, start, len, 0, &new, &stat);
        if (error)
                return error;
        ASSERT(stat);
@@ -962,7 +962,7 @@ xfs_rtcheck_alloc_range(
 int                                    /* error */
 xfs_rtfree_extent(
        xfs_trans_t     *tp,            /* transaction pointer */
-       xfs_rtblock_t   bno,            /* starting block number to free */
+       xfs_rtxnum_t    start,          /* starting rtext number to free */
        xfs_rtxlen_t    len)            /* length of extent freed */
 {
        int             error;          /* error value */
@@ -975,14 +975,14 @@ xfs_rtfree_extent(
        ASSERT(mp->m_rbmip->i_itemp != NULL);
        ASSERT(xfs_isilocked(mp->m_rbmip, XFS_ILOCK_EXCL));
 
-       error = xfs_rtcheck_alloc_range(mp, tp, bno, len);
+       error = xfs_rtcheck_alloc_range(mp, tp, start, len);
        if (error)
                return error;
 
        /*
         * Free the range of realtime blocks.
         */
-       error = xfs_rtfree_range(mp, tp, bno, len, &sumbp, &sb);
+       error = xfs_rtfree_range(mp, tp, start, len, &sumbp, &sb);
        if (error) {
                return error;
        }
@@ -1016,7 +1016,7 @@ xfs_rtfree_blocks(
        xfs_filblks_t           rtlen)
 {
        struct xfs_mount        *mp = tp->t_mountp;
-       xfs_rtblock_t           bno;
+       xfs_rtxnum_t            start;
        xfs_filblks_t           len;
        xfs_extlen_t            mod;
 
@@ -1028,13 +1028,13 @@ xfs_rtfree_blocks(
                return -EIO;
        }
 
-       bno = div_u64_rem(rtbno, mp->m_sb.sb_rextsize, &mod);
+       start = div_u64_rem(rtbno, mp->m_sb.sb_rextsize, &mod);
        if (mod) {
                ASSERT(mod == 0);
                return -EIO;
        }
 
-       return xfs_rtfree_extent(tp, bno, len);
+       return xfs_rtfree_extent(tp, start, len);
 }
 
 /* Find all the free records within a given range. */
@@ -1048,9 +1048,9 @@ xfs_rtalloc_query_range(
        void                            *priv)
 {
        struct xfs_rtalloc_rec          rec;
-       xfs_rtblock_t                   rtstart;
-       xfs_rtblock_t                   rtend;
-       xfs_rtblock_t                   high_key;
+       xfs_rtxnum_t                    rtstart;
+       xfs_rtxnum_t                    rtend;
+       xfs_rtxnum_t                    high_key;
        int                             is_free;
        int                             error = 0;
 
@@ -1113,11 +1113,11 @@ int
 xfs_rtalloc_extent_is_free(
        struct xfs_mount                *mp,
        struct xfs_trans                *tp,
-       xfs_rtblock_t                   start,
+       xfs_rtxnum_t                    start,
        xfs_rtxlen_t                    len,
        bool                            *is_free)
 {
-       xfs_rtblock_t                   end;
+       xfs_rtxnum_t                    end;
        int                             matches;
        int                             error;
 
index b0a81fb8dbda2ff12386453176942b0483b8d98f..5e2afb7fea0e749e37d8c6ac238eb066bd865daf 100644 (file)
@@ -7,12 +7,10 @@
 #define        __XFS_RTBITMAP_H__
 
 /*
- * XXX: Most of the realtime allocation functions deal in units of realtime
- * extents, not realtime blocks.  This looks funny when paired with the type
- * name and screams for a larger cleanup.
+ * Functions for walking free space rtextents in the realtime bitmap.
  */
 struct xfs_rtalloc_rec {
-       xfs_rtblock_t           ar_startext;
+       xfs_rtxnum_t            ar_startext;
        xfs_rtbxlen_t           ar_extcount;
 };
 
@@ -26,16 +24,16 @@ typedef int (*xfs_rtalloc_query_range_fn)(
 int xfs_rtbuf_get(struct xfs_mount *mp, struct xfs_trans *tp,
                  xfs_fileoff_t block, int issum, struct xfs_buf **bpp);
 int xfs_rtcheck_range(struct xfs_mount *mp, struct xfs_trans *tp,
-                     xfs_rtblock_t start, xfs_rtxlen_t len, int val,
-                     xfs_rtblock_t *new, int *stat);
+                     xfs_rtxnum_t start, xfs_rtxlen_t len, int val,
+                     xfs_rtxnum_t *new, int *stat);
 int xfs_rtfind_back(struct xfs_mount *mp, struct xfs_trans *tp,
-                   xfs_rtblock_t start, xfs_rtblock_t limit,
-                   xfs_rtblock_t *rtblock);
+                   xfs_rtxnum_t start, xfs_rtxnum_t limit,
+                   xfs_rtxnum_t *rtblock);
 int xfs_rtfind_forw(struct xfs_mount *mp, struct xfs_trans *tp,
-                   xfs_rtblock_t start, xfs_rtblock_t limit,
-                   xfs_rtblock_t *rtblock);
+                   xfs_rtxnum_t start, xfs_rtxnum_t limit,
+                   xfs_rtxnum_t *rtblock);
 int xfs_rtmodify_range(struct xfs_mount *mp, struct xfs_trans *tp,
-                      xfs_rtblock_t start, xfs_rtxlen_t len, int val);
+                      xfs_rtxnum_t start, xfs_rtxlen_t len, int val);
 int xfs_rtmodify_summary_int(struct xfs_mount *mp, struct xfs_trans *tp,
                             int log, xfs_fileoff_t bbno, int delta,
                             struct xfs_buf **rbpp, xfs_fileoff_t *rsb,
@@ -44,7 +42,7 @@ int xfs_rtmodify_summary(struct xfs_mount *mp, struct xfs_trans *tp, int log,
                         xfs_fileoff_t bbno, int delta, struct xfs_buf **rbpp,
                         xfs_fileoff_t *rsb);
 int xfs_rtfree_range(struct xfs_mount *mp, struct xfs_trans *tp,
-                    xfs_rtblock_t start, xfs_rtxlen_t len,
+                    xfs_rtxnum_t start, xfs_rtxlen_t len,
                     struct xfs_buf **rbpp, xfs_fileoff_t *rsb);
 int xfs_rtalloc_query_range(struct xfs_mount *mp, struct xfs_trans *tp,
                const struct xfs_rtalloc_rec *low_rec,
@@ -54,7 +52,7 @@ int xfs_rtalloc_query_all(struct xfs_mount *mp, struct xfs_trans *tp,
                          xfs_rtalloc_query_range_fn fn,
                          void *priv);
 int xfs_rtalloc_extent_is_free(struct xfs_mount *mp, struct xfs_trans *tp,
-                              xfs_rtblock_t start, xfs_rtxlen_t len,
+                              xfs_rtxnum_t start, xfs_rtxlen_t len,
                               bool *is_free);
 /*
  * Free an extent in the realtime subvolume.  Length is expressed in
@@ -63,7 +61,7 @@ int xfs_rtalloc_extent_is_free(struct xfs_mount *mp, struct xfs_trans *tp,
 int                                    /* error */
 xfs_rtfree_extent(
        struct xfs_trans        *tp,    /* transaction pointer */
-       xfs_rtblock_t           bno,    /* starting block number to free */
+       xfs_rtxnum_t            start,  /* starting rtext number to free */
        xfs_rtxlen_t            len);   /* length of extent freed */
 
 /* Same as above, but in units of rt blocks. */
index 9e45f13f6d70959698d46e289894f71989c49f92..c78237852e27349afb2b094c4b61a34cc4b61d9c 100644 (file)
@@ -32,6 +32,7 @@ typedef uint64_t      xfs_rfsblock_t; /* blockno in filesystem (raw) */
 typedef uint64_t       xfs_rtblock_t;  /* extent (block) in realtime area */
 typedef uint64_t       xfs_fileoff_t;  /* block number in a file */
 typedef uint64_t       xfs_filblks_t;  /* number of blocks in a file */
+typedef uint64_t       xfs_rtxnum_t;   /* rtextent number */
 typedef uint64_t       xfs_rtbxlen_t;  /* rtbitmap extent length in rtextents */
 
 typedef int64_t                xfs_srtblock_t; /* signed version of xfs_rtblock_t */
@@ -49,6 +50,7 @@ typedef void *                xfs_failaddr_t;
 #define        NULLRFSBLOCK    ((xfs_rfsblock_t)-1)
 #define        NULLRTBLOCK     ((xfs_rtblock_t)-1)
 #define        NULLFILEOFF     ((xfs_fileoff_t)-1)
+#define        NULLRTEXTNO     ((xfs_rtxnum_t)-1)
 
 #define        NULLAGBLOCK     ((xfs_agblock_t)-1)
 #define        NULLAGNUMBER    ((xfs_agnumber_t)-1)