]> git.ipfire.org Git - thirdparty/xfsprogs-dev.git/commitdiff
xfs: pass explicit mount pointer to rtalloc query functions
authorDarrick J. Wong <djwong@kernel.org>
Wed, 22 Jun 2022 19:28:52 +0000 (14:28 -0500)
committerEric Sandeen <sandeen@sandeen.net>
Wed, 22 Jun 2022 19:28:52 +0000 (14:28 -0500)
Source kernel commit: f34061f554feba68e12b7a73008c350d2a9afd0c

Pass an explicit xfs_mount pointer to the rtalloc query functions so
that they can support transactionless queries.

Signed-off-by: Darrick J. Wong <djwong@kernel.org>
Reviewed-by: Dave Chinner <dchinner@redhat.com>
Signed-off-by: Dave Chinner <david@fromorbit.com>
Signed-off-by: Eric Sandeen <sandeen@sandeen.net>
libxfs/libxfs_priv.h
libxfs/xfs_rtbitmap.c

index 12028efbf802f54c7695d23dd412f43dac894ef7..9260e6829d7e51c64f6d20f01e471ea2c36af19e 100644 (file)
@@ -594,6 +594,7 @@ struct xfs_rtalloc_rec {
 };
 
 typedef int (*xfs_rtalloc_query_range_fn)(
+       struct xfs_mount                *mp,
        struct xfs_trans                *tp,
        const struct xfs_rtalloc_rec    *rec,
        void                            *priv);
@@ -689,12 +690,14 @@ int xfs_rtmodify_summary(struct xfs_mount *mp, struct xfs_trans *tp, int log,
 int xfs_rtfree_range(struct xfs_mount *mp, struct xfs_trans *tp,
                     xfs_rtblock_t start, xfs_extlen_t len,
                     struct xfs_buf **rbpp, xfs_fsblock_t *rsb);
-int xfs_rtalloc_query_range(struct xfs_trans *tp,
+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_rtalloc_query_range_fn fn,
                            void *priv);
-int xfs_rtalloc_query_all(struct xfs_trans *tp,
+int xfs_rtalloc_query_all(struct xfs_mount *mp,
+                         struct xfs_trans *tp,
                          xfs_rtalloc_query_range_fn fn,
                          void *priv);
 bool xfs_verify_rtbno(struct xfs_mount *mp, xfs_rtblock_t rtbno);
index 15da049616e52fdfd701c5fc08427ba1cbf46f3b..bc8312caf54b1e0a2444142b3e07af6521307b5d 100644 (file)
@@ -1006,6 +1006,7 @@ xfs_rtfree_extent(
 /* Find all the free records within a given range. */
 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,
@@ -1013,7 +1014,6 @@ xfs_rtalloc_query_range(
        void                            *priv)
 {
        struct xfs_rtalloc_rec          rec;
-       struct xfs_mount                *mp = tp->t_mountp;
        xfs_rtblock_t                   rtstart;
        xfs_rtblock_t                   rtend;
        xfs_rtblock_t                   high_key;
@@ -1046,7 +1046,7 @@ xfs_rtalloc_query_range(
                        rec.ar_startext = rtstart;
                        rec.ar_extcount = rtend - rtstart + 1;
 
-                       error = fn(tp, &rec, priv);
+                       error = fn(mp, tp, &rec, priv);
                        if (error)
                                break;
                }
@@ -1060,6 +1060,7 @@ xfs_rtalloc_query_range(
 /* Find all the free records. */
 int
 xfs_rtalloc_query_all(
+       struct xfs_mount                *mp,
        struct xfs_trans                *tp,
        xfs_rtalloc_query_range_fn      fn,
        void                            *priv)
@@ -1067,10 +1068,10 @@ xfs_rtalloc_query_all(
        struct xfs_rtalloc_rec          keys[2];
 
        keys[0].ar_startext = 0;
-       keys[1].ar_startext = tp->t_mountp->m_sb.sb_rextents - 1;
+       keys[1].ar_startext = mp->m_sb.sb_rextents - 1;
        keys[0].ar_extcount = keys[1].ar_extcount = 0;
 
-       return xfs_rtalloc_query_range(tp, &keys[0], &keys[1], fn, priv);
+       return xfs_rtalloc_query_range(mp, tp, &keys[0], &keys[1], fn, priv);
 }
 
 /* Is the given extent all free? */