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: Dave Chinner <dchinner@redhat.com> Reviewed-by: Christoph Hellwig <hch@lst.de> Reviewed-by: Darrick J. Wong <djwong@kernel.org>
This commit is contained in:
Родитель
8c392eb27f
Коммит
cec7bb7d58
|
@ -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(
|
||||||
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(
|
||||||
/*
|
/*
|
||||||
* 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(
|
||||||
__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,
|
||||||
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(
|
||||||
* 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(
|
||||||
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;
|
||||||
|
|
||||||
|
|
Загрузка…
Ссылка в новой задаче