xfs: pass perag to xfs_alloc_read_agfl
authorDave Chinner <dchinner@redhat.com>
Thu, 7 Jul 2022 09:08:15 +0000 (19:08 +1000)
committerDave Chinner <david@fromorbit.com>
Thu, 7 Jul 2022 09:08:15 +0000 (19:08 +1000)
We have the perag in most places we call xfs_alloc_read_agfl, so
pass the perag instead of a mount/agno pair.

Signed-off-by: Dave Chinner <dchinner@redhat.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Darrick J. Wong <djwong@kernel.org>
fs/xfs/libxfs/xfs_alloc.c
fs/xfs/libxfs/xfs_alloc.h
fs/xfs/scrub/agheader_repair.c
fs/xfs/scrub/common.c

index 9ab0bd07d1d8ca24d41ed23174d0e585bfbf0a48..ea9452950647b72804c0005b77311ffd890e92f0 100644 (file)
@@ -703,20 +703,19 @@ const struct xfs_buf_ops xfs_agfl_buf_ops = {
 /*
  * Read in the allocation group free block array.
  */
-int                                    /* error */
+int
 xfs_alloc_read_agfl(
-       xfs_mount_t     *mp,            /* mount point structure */
-       xfs_trans_t     *tp,            /* transaction pointer */
-       xfs_agnumber_t  agno,           /* allocation group number */
-       struct xfs_buf  **bpp)          /* buffer for the ag free block array */
+       struct xfs_perag        *pag,
+       struct xfs_trans        *tp,
+       struct xfs_buf          **bpp)
 {
-       struct xfs_buf  *bp;            /* return value */
-       int             error;
+       struct xfs_mount        *mp = pag->pag_mount;
+       struct xfs_buf          *bp;
+       int                     error;
 
-       ASSERT(agno != NULLAGNUMBER);
        error = xfs_trans_read_buf(
                        mp, tp, mp->m_ddev_targp,
-                       XFS_AG_DADDR(mp, agno, XFS_AGFL_DADDR(mp)),
+                       XFS_AG_DADDR(mp, pag->pag_agno, XFS_AGFL_DADDR(mp)),
                        XFS_FSS_TO_BB(mp, 1), 0, &bp, &xfs_agfl_buf_ops);
        if (error)
                return error;
@@ -2713,7 +2712,7 @@ xfs_alloc_fix_freelist(
        targs.alignment = targs.minlen = targs.prod = 1;
        targs.type = XFS_ALLOCTYPE_THIS_AG;
        targs.pag = pag;
-       error = xfs_alloc_read_agfl(mp, tp, targs.agno, &agflbp);
+       error = xfs_alloc_read_agfl(pag, tp, &agflbp);
        if (error)
                goto out_agbp_relse;
 
@@ -2792,8 +2791,7 @@ xfs_alloc_get_freelist(
        /*
         * Read the array of free blocks.
         */
-       error = xfs_alloc_read_agfl(mp, tp, be32_to_cpu(agf->agf_seqno),
-                                   &agflbp);
+       error = xfs_alloc_read_agfl(pag, tp, &agflbp);
        if (error)
                return error;
 
@@ -2887,9 +2885,12 @@ xfs_alloc_put_freelist(
        __be32                  *agfl_bno;
        int                     startoff;
 
-       if (!agflbp && (error = xfs_alloc_read_agfl(mp, tp,
-                       be32_to_cpu(agf->agf_seqno), &agflbp)))
-               return error;
+       if (!agflbp) {
+               error = xfs_alloc_read_agfl(pag, tp, &agflbp);
+               if (error)
+                       return error;
+       }
+
        be32_add_cpu(&agf->agf_fllast, 1);
        if (be32_to_cpu(agf->agf_fllast) == xfs_agfl_size(mp))
                agf->agf_fllast = 0;
index d32a70a28c32ca220be6566a744e25ec4b65e2fc..2c3f762dfb581871bdf6955e19a5d76c926a3c3c 100644 (file)
@@ -172,8 +172,8 @@ int xfs_read_agf(struct xfs_perag *pag, struct xfs_trans *tp, int flags,
                struct xfs_buf **agfbpp);
 int xfs_alloc_read_agf(struct xfs_perag *pag, struct xfs_trans *tp, int flags,
                struct xfs_buf **agfbpp);
-int xfs_alloc_read_agfl(struct xfs_mount *mp, struct xfs_trans *tp,
-                       xfs_agnumber_t agno, struct xfs_buf **bpp);
+int xfs_alloc_read_agfl(struct xfs_perag *pag, struct xfs_trans *tp,
+               struct xfs_buf **bpp);
 int xfs_free_agfl_block(struct xfs_trans *, xfs_agnumber_t, xfs_agblock_t,
                        struct xfs_buf *, struct xfs_owner_info *);
 int xfs_alloc_fix_freelist(struct xfs_alloc_arg *args, int flags);
index 230bdfe36e806f2759027aeb80b809a9ee5bc692..10ac1118a5958ee4e82f971a32377a8c475bea2d 100644 (file)
@@ -405,7 +405,7 @@ xrep_agf(
         * btrees rooted in the AGF.  If the AGFL contents are obviously bad
         * then we'll bail out.
         */
-       error = xfs_alloc_read_agfl(mp, sc->tp, sc->sa.pag->pag_agno, &agfl_bp);
+       error = xfs_alloc_read_agfl(sc->sa.pag, sc->tp, &agfl_bp);
        if (error)
                return error;
 
index cd7d4ebd240b5167b9b415649812a88487d46e91..9bbbf20f401b3af92eec89db60909d96ca0b2ada 100644 (file)
@@ -424,7 +424,7 @@ xchk_ag_read_headers(
        if (error && want_ag_read_header_failure(sc, XFS_SCRUB_TYPE_AGF))
                return error;
 
-       error = xfs_alloc_read_agfl(mp, sc->tp, agno, &sa->agfl_bp);
+       error = xfs_alloc_read_agfl(sa->pag, sc->tp, &sa->agfl_bp);
        if (error && want_ag_read_header_failure(sc, XFS_SCRUB_TYPE_AGFL))
                return error;