]> git.ipfire.org Git - thirdparty/xfsprogs-dev.git/commitdiff
xfs: pass perag to xfs_alloc_get_freelist
authorDave Chinner <dchinner@redhat.com>
Mon, 22 Aug 2022 12:25:30 +0000 (14:25 +0200)
committerCarlos Maiolino <cem@kernel.org>
Tue, 30 Aug 2022 07:56:33 +0000 (09:56 +0200)
Source kernel commit: 49f0d84ec1db5bd46dcf3796fc792fce74ff25a3

It's available in all callers, so pass it in so that the perag can
be passed further down the stack.

Signed-off-by: Dave Chinner <dchinner@redhat.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Darrick J. Wong <djwong@kernel.org>
Signed-off-by: Carlos Maiolino <cem@kernel.org>
libxfs/xfs_alloc.c
libxfs/xfs_alloc.h
libxfs/xfs_alloc_btree.c
libxfs/xfs_rmap_btree.c

index 85aaff9afb86992407d22f4f15bc2d48beecaaf9..e2251f258bcfcb1c65a682e3a0faafc95e2e8a5b 100644 (file)
@@ -1071,7 +1071,8 @@ xfs_alloc_ag_vextent_small(
            be32_to_cpu(agf->agf_flcount) <= args->minleft)
                goto out;
 
-       error = xfs_alloc_get_freelist(args->tp, args->agbp, &fbno, 0);
+       error = xfs_alloc_get_freelist(args->pag, args->tp, args->agbp,
+                       &fbno, 0);
        if (error)
                goto error;
        if (fbno == NULLAGBLOCK)
@@ -2693,7 +2694,7 @@ xfs_alloc_fix_freelist(
        else
                targs.oinfo = XFS_RMAP_OINFO_AG;
        while (!(flags & XFS_ALLOC_FLAG_NOSHRINK) && pag->pagf_flcount > need) {
-               error = xfs_alloc_get_freelist(tp, agbp, &bno, 0);
+               error = xfs_alloc_get_freelist(pag, tp, agbp, &bno, 0);
                if (error)
                        goto out_agbp_relse;
 
@@ -2763,6 +2764,7 @@ out_no_agbp:
  */
 int
 xfs_alloc_get_freelist(
+       struct xfs_perag        *pag,
        struct xfs_trans        *tp,
        struct xfs_buf          *agbp,
        xfs_agblock_t           *bnop,
@@ -2775,7 +2777,6 @@ xfs_alloc_get_freelist(
        int                     error;
        uint32_t                logflags;
        struct xfs_mount        *mp = tp->t_mountp;
-       struct xfs_perag        *pag;
 
        /*
         * Freelist is empty, give up.
@@ -2803,7 +2804,6 @@ xfs_alloc_get_freelist(
        if (be32_to_cpu(agf->agf_flfirst) == xfs_agfl_size(mp))
                agf->agf_flfirst = 0;
 
-       pag = agbp->b_pag;
        ASSERT(!pag->pagf_agflreset);
        be32_add_cpu(&agf->agf_flcount, -1);
        pag->pagf_flcount--;
index 06e69fe9c95730cf97a4dbd15a9a55630e49c01b..6349f0e5f93d48ddd1af7aa97b020c1964d0c547 100644 (file)
@@ -95,6 +95,8 @@ xfs_extlen_t xfs_alloc_longest_free_extent(struct xfs_perag *pag,
                xfs_extlen_t need, xfs_extlen_t reserved);
 unsigned int xfs_alloc_min_freelist(struct xfs_mount *mp,
                struct xfs_perag *pag);
+int xfs_alloc_get_freelist(struct xfs_perag *pag, struct xfs_trans *tp,
+               struct xfs_buf *agfbp, xfs_agblock_t *bnop, int  btreeblk);
 
 /*
  * Compute and fill in value of m_alloc_maxlevels.
@@ -103,17 +105,6 @@ void
 xfs_alloc_compute_maxlevels(
        struct xfs_mount        *mp);   /* file system mount structure */
 
-/*
- * Get a block from the freelist.
- * Returns with the buffer for the block gotten.
- */
-int                            /* error */
-xfs_alloc_get_freelist(
-       struct xfs_trans *tp,   /* transaction pointer */
-       struct xfs_buf  *agbp,  /* buffer containing the agf structure */
-       xfs_agblock_t   *bnop,  /* block address retrieved from freelist */
-       int             btreeblk); /* destination is a AGF btree */
-
 /*
  * Log the given fields from the agf structure.
  */
index 2ba6d44af47709b1e6f9d559a74c589f951bc6aa..16be27927d1f15268b2142f748705b65bd87ae56 100644 (file)
@@ -58,8 +58,8 @@ xfs_allocbt_alloc_block(
        xfs_agblock_t           bno;
 
        /* Allocate the new block from the freelist. If we can't, give up.  */
-       error = xfs_alloc_get_freelist(cur->bc_tp, cur->bc_ag.agbp,
-                                      &bno, 1);
+       error = xfs_alloc_get_freelist(cur->bc_ag.pag, cur->bc_tp,
+                       cur->bc_ag.agbp, &bno, 1);
        if (error)
                return error;
 
@@ -69,7 +69,7 @@ xfs_allocbt_alloc_block(
        }
 
        atomic64_inc(&cur->bc_mp->m_allocbt_blks);
-       xfs_extent_busy_reuse(cur->bc_mp, cur->bc_ag.agbp->b_pag, bno, 1, false);
+       xfs_extent_busy_reuse(cur->bc_mp, cur->bc_ag.pag, bno, 1, false);
 
        new->s = cpu_to_be32(bno);
 
index 0fc58632a9bfa8a71a3fabd972f350fbd79b6cdb..63a1a8f9b342bc18aa7a6fa3e663bcba4791a0d9 100644 (file)
@@ -88,7 +88,7 @@ xfs_rmapbt_alloc_block(
        xfs_agblock_t           bno;
 
        /* Allocate the new block from the freelist. If we can't, give up.  */
-       error = xfs_alloc_get_freelist(cur->bc_tp, cur->bc_ag.agbp,
+       error = xfs_alloc_get_freelist(pag, cur->bc_tp, cur->bc_ag.agbp,
                                       &bno, 1);
        if (error)
                return error;