]> git.ipfire.org Git - thirdparty/xfsprogs-dev.git/commitdiff
xfs: simplify xfs_rtalloc_query_range
authorChristoph Hellwig <hch@lst.de>
Mon, 21 Oct 2024 00:10:43 +0000 (17:10 -0700)
committerDarrick J. Wong <djwong@kernel.org>
Thu, 31 Oct 2024 22:45:02 +0000 (15:45 -0700)
Source kernel commit: df8b181f1551581e96076a653cdca43468093c0f

There isn't much of a good reason to pass the xfs_rtalloc_rec structures
that describe extents to xfs_rtalloc_query_range as we really just want
a lower and upper bound xfs_rtxnum_t.  Pass the rtxnum directly and
simply the interface.

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

index 74029d4431e1caee7b619a1d2eb0446f81294ce7..3f534a4724a26b955ae6dc4c8db4c3c374bdf99b 100644 (file)
@@ -1045,8 +1045,8 @@ int
 xfs_rtalloc_query_range(
        struct xfs_mount                *mp,
        struct xfs_trans                *tp,
-       const struct xfs_rtalloc_rec    *low_rec,
-       const struct xfs_rtalloc_rec    *high_rec,
+       xfs_rtxnum_t                    start,
+       xfs_rtxnum_t                    end,
        xfs_rtalloc_query_range_fn      fn,
        void                            *priv)
 {
@@ -1054,45 +1054,42 @@ xfs_rtalloc_query_range(
                .mp                     = mp,
                .tp                     = tp,
        };
-       struct xfs_rtalloc_rec          rec;
-       xfs_rtxnum_t                    rtstart;
-       xfs_rtxnum_t                    rtend;
-       xfs_rtxnum_t                    high_key;
-       int                             is_free;
        int                             error = 0;
 
-       if (low_rec->ar_startext > high_rec->ar_startext)
+       if (start > end)
                return -EINVAL;
-       if (low_rec->ar_startext >= mp->m_sb.sb_rextents ||
-           low_rec->ar_startext == high_rec->ar_startext)
+       if (start == end || start >= mp->m_sb.sb_rextents)
                return 0;
 
-       high_key = min(high_rec->ar_startext, mp->m_sb.sb_rextents - 1);
+       end = min(end, mp->m_sb.sb_rextents - 1);
 
        /* Iterate the bitmap, looking for discrepancies. */
-       rtstart = low_rec->ar_startext;
-       while (rtstart <= high_key) {
+       while (start <= end) {
+               struct xfs_rtalloc_rec  rec;
+               int                     is_free;
+               xfs_rtxnum_t            rtend;
+
                /* Is the first block free? */
-               error = xfs_rtcheck_range(&args, rtstart, 1, 1, &rtend,
+               error = xfs_rtcheck_range(&args, start, 1, 1, &rtend,
                                &is_free);
                if (error)
                        break;
 
                /* How long does the extent go for? */
-               error = xfs_rtfind_forw(&args, rtstart, high_key, &rtend);
+               error = xfs_rtfind_forw(&args, start, end, &rtend);
                if (error)
                        break;
 
                if (is_free) {
-                       rec.ar_startext = rtstart;
-                       rec.ar_extcount = rtend - rtstart + 1;
+                       rec.ar_startext = start;
+                       rec.ar_extcount = rtend - start + 1;
 
                        error = fn(mp, tp, &rec, priv);
                        if (error)
                                break;
                }
 
-               rtstart = rtend + 1;
+               start = rtend + 1;
        }
 
        xfs_rtbuf_cache_relse(&args);
@@ -1107,13 +1104,8 @@ xfs_rtalloc_query_all(
        xfs_rtalloc_query_range_fn      fn,
        void                            *priv)
 {
-       struct xfs_rtalloc_rec          keys[2];
-
-       keys[0].ar_startext = 0;
-       keys[1].ar_startext = mp->m_sb.sb_rextents - 1;
-       keys[0].ar_extcount = keys[1].ar_extcount = 0;
-
-       return xfs_rtalloc_query_range(mp, tp, &keys[0], &keys[1], fn, priv);
+       return xfs_rtalloc_query_range(mp, tp, 0, mp->m_sb.sb_rextents - 1, fn,
+                       priv);
 }
 
 /* Is the given extent all free? */
index 69ddacd4b01e6f2839f28eee31227d2f5b625e86..0dbc9bb40668a2c5311bef0e445de3fd0aa02fc9 100644 (file)
@@ -292,8 +292,7 @@ int xfs_rtmodify_summary(struct xfs_rtalloc_args *args, int log,
 int xfs_rtfree_range(struct xfs_rtalloc_args *args, xfs_rtxnum_t start,
                xfs_rtxlen_t len);
 int xfs_rtalloc_query_range(struct xfs_mount *mp, struct xfs_trans *tp,
-               const struct xfs_rtalloc_rec *low_rec,
-               const struct xfs_rtalloc_rec *high_rec,
+               xfs_rtxnum_t start, xfs_rtxnum_t end,
                xfs_rtalloc_query_range_fn fn, void *priv);
 int xfs_rtalloc_query_all(struct xfs_mount *mp, struct xfs_trans *tp,
                          xfs_rtalloc_query_range_fn fn,