Commit cec7bb7d authored by Dave Chinner's avatar Dave Chinner Committed by Dave Chinner

xfs: pass perag to xfs_alloc_read_agfl

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: default avatarDave Chinner <dchinner@redhat.com>
Reviewed-by: default avatarChristoph Hellwig <hch@lst.de>
Reviewed-by: default avatarDarrick J. Wong <djwong@kernel.org>
parent 8c392eb2
...@@ -703,20 +703,19 @@ const struct xfs_buf_ops xfs_agfl_buf_ops = { ...@@ -703,20 +703,19 @@ const struct xfs_buf_ops xfs_agfl_buf_ops = {
/* /*
* Read in the allocation group free block array. * Read in the allocation group free block array.
*/ */
int /* error */ int
xfs_alloc_read_agfl( xfs_alloc_read_agfl(
xfs_mount_t *mp, /* mount point structure */ struct xfs_perag *pag,
xfs_trans_t *tp, /* transaction pointer */ struct xfs_trans *tp,
xfs_agnumber_t agno, /* allocation group number */ struct xfs_buf **bpp)
struct xfs_buf **bpp) /* buffer for the ag free block array */
{ {
struct xfs_buf *bp; /* return value */ struct xfs_mount *mp = pag->pag_mount;
int error; struct xfs_buf *bp;
int error;
ASSERT(agno != NULLAGNUMBER);
error = xfs_trans_read_buf( error = xfs_trans_read_buf(
mp, tp, mp->m_ddev_targp, 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); XFS_FSS_TO_BB(mp, 1), 0, &bp, &xfs_agfl_buf_ops);
if (error) if (error)
return error; return error;
...@@ -2713,7 +2712,7 @@ xfs_alloc_fix_freelist( ...@@ -2713,7 +2712,7 @@ xfs_alloc_fix_freelist(
targs.alignment = targs.minlen = targs.prod = 1; targs.alignment = targs.minlen = targs.prod = 1;
targs.type = XFS_ALLOCTYPE_THIS_AG; targs.type = XFS_ALLOCTYPE_THIS_AG;
targs.pag = pag; targs.pag = pag;
error = xfs_alloc_read_agfl(mp, tp, targs.agno, &agflbp); error = xfs_alloc_read_agfl(pag, tp, &agflbp);
if (error) if (error)
goto out_agbp_relse; goto out_agbp_relse;
...@@ -2792,8 +2791,7 @@ xfs_alloc_get_freelist( ...@@ -2792,8 +2791,7 @@ xfs_alloc_get_freelist(
/* /*
* Read the array of free blocks. * Read the array of free blocks.
*/ */
error = xfs_alloc_read_agfl(mp, tp, be32_to_cpu(agf->agf_seqno), error = xfs_alloc_read_agfl(pag, tp, &agflbp);
&agflbp);
if (error) if (error)
return error; return error;
...@@ -2887,9 +2885,12 @@ xfs_alloc_put_freelist( ...@@ -2887,9 +2885,12 @@ xfs_alloc_put_freelist(
__be32 *agfl_bno; __be32 *agfl_bno;
int startoff; int startoff;
if (!agflbp && (error = xfs_alloc_read_agfl(mp, tp, if (!agflbp) {
be32_to_cpu(agf->agf_seqno), &agflbp))) error = xfs_alloc_read_agfl(pag, tp, &agflbp);
return error; if (error)
return error;
}
be32_add_cpu(&agf->agf_fllast, 1); be32_add_cpu(&agf->agf_fllast, 1);
if (be32_to_cpu(agf->agf_fllast) == xfs_agfl_size(mp)) if (be32_to_cpu(agf->agf_fllast) == xfs_agfl_size(mp))
agf->agf_fllast = 0; agf->agf_fllast = 0;
......
...@@ -172,8 +172,8 @@ int xfs_read_agf(struct xfs_perag *pag, struct xfs_trans *tp, int flags, ...@@ -172,8 +172,8 @@ int xfs_read_agf(struct xfs_perag *pag, struct xfs_trans *tp, int flags,
struct xfs_buf **agfbpp); struct xfs_buf **agfbpp);
int xfs_alloc_read_agf(struct xfs_perag *pag, struct xfs_trans *tp, int flags, int xfs_alloc_read_agf(struct xfs_perag *pag, struct xfs_trans *tp, int flags,
struct xfs_buf **agfbpp); struct xfs_buf **agfbpp);
int xfs_alloc_read_agfl(struct xfs_mount *mp, struct xfs_trans *tp, int xfs_alloc_read_agfl(struct xfs_perag *pag, struct xfs_trans *tp,
xfs_agnumber_t agno, struct xfs_buf **bpp); struct xfs_buf **bpp);
int xfs_free_agfl_block(struct xfs_trans *, xfs_agnumber_t, xfs_agblock_t, int xfs_free_agfl_block(struct xfs_trans *, xfs_agnumber_t, xfs_agblock_t,
struct xfs_buf *, struct xfs_owner_info *); struct xfs_buf *, struct xfs_owner_info *);
int xfs_alloc_fix_freelist(struct xfs_alloc_arg *args, int flags); int xfs_alloc_fix_freelist(struct xfs_alloc_arg *args, int flags);
......
...@@ -405,7 +405,7 @@ xrep_agf( ...@@ -405,7 +405,7 @@ xrep_agf(
* btrees rooted in the AGF. If the AGFL contents are obviously bad * btrees rooted in the AGF. If the AGFL contents are obviously bad
* then we'll bail out. * 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) if (error)
return error; return error;
......
...@@ -424,7 +424,7 @@ xchk_ag_read_headers( ...@@ -424,7 +424,7 @@ xchk_ag_read_headers(
if (error && want_ag_read_header_failure(sc, XFS_SCRUB_TYPE_AGF)) if (error && want_ag_read_header_failure(sc, XFS_SCRUB_TYPE_AGF))
return error; 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)) if (error && want_ag_read_header_failure(sc, XFS_SCRUB_TYPE_AGFL))
return error; return error;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment