Commit 76b47e52 authored by Dave Chinner's avatar Dave Chinner Committed by Dave Chinner

xfs: kill xfs_alloc_pagf_init()

Trivial wrapper around xfs_alloc_read_agf(), can be easily replaced
by passing a NULL agfbp to xfs_alloc_read_agf().
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 99b13c7f
...@@ -124,7 +124,7 @@ xfs_initialize_perag_data( ...@@ -124,7 +124,7 @@ xfs_initialize_perag_data(
* all the information we need and populates the * all the information we need and populates the
* per-ag structures for us. * per-ag structures for us.
*/ */
error = xfs_alloc_pagf_init(mp, NULL, index, 0); error = xfs_alloc_read_agf(mp, NULL, index, 0, NULL);
if (error) if (error)
return error; return error;
......
...@@ -322,7 +322,7 @@ xfs_ag_resv_init( ...@@ -322,7 +322,7 @@ xfs_ag_resv_init(
* address. * address.
*/ */
if (has_resv) { if (has_resv) {
error2 = xfs_alloc_pagf_init(mp, tp, pag->pag_agno, 0); error2 = xfs_alloc_read_agf(mp, tp, pag->pag_agno, 0, NULL);
if (error2) if (error2)
return error2; return error2;
......
...@@ -2867,25 +2867,6 @@ xfs_alloc_log_agf( ...@@ -2867,25 +2867,6 @@ xfs_alloc_log_agf(
xfs_trans_log_buf(tp, bp, (uint)first, (uint)last); xfs_trans_log_buf(tp, bp, (uint)first, (uint)last);
} }
/*
* Interface for inode allocation to force the pag data to be initialized.
*/
int /* error */
xfs_alloc_pagf_init(
xfs_mount_t *mp, /* file system mount structure */
xfs_trans_t *tp, /* transaction pointer */
xfs_agnumber_t agno, /* allocation group number */
int flags) /* XFS_ALLOC_FLAGS_... */
{
struct xfs_buf *bp;
int error;
error = xfs_alloc_read_agf(mp, tp, agno, flags, &bp);
if (!error)
xfs_trans_brelse(tp, bp);
return error;
}
/* /*
* Put the block on the freelist for the allocation group. * Put the block on the freelist for the allocation group.
*/ */
...@@ -3095,7 +3076,9 @@ xfs_read_agf( ...@@ -3095,7 +3076,9 @@ xfs_read_agf(
} }
/* /*
* Read in the allocation group header (free/alloc section). * Read in the allocation group header (free/alloc section) and initialise the
* perag structure if necessary. If the caller provides @agfbpp, then return the
* locked buffer to the caller, otherwise free it.
*/ */
int /* error */ int /* error */
xfs_alloc_read_agf( xfs_alloc_read_agf(
...@@ -3103,8 +3086,9 @@ xfs_alloc_read_agf( ...@@ -3103,8 +3086,9 @@ xfs_alloc_read_agf(
struct xfs_trans *tp, /* transaction pointer */ struct xfs_trans *tp, /* transaction pointer */
xfs_agnumber_t agno, /* allocation group number */ xfs_agnumber_t agno, /* allocation group number */
int flags, /* XFS_ALLOC_FLAG_... */ int flags, /* XFS_ALLOC_FLAG_... */
struct xfs_buf **bpp) /* buffer for the ag freelist header */ struct xfs_buf **agfbpp)
{ {
struct xfs_buf *agfbp;
struct xfs_agf *agf; /* ag freelist header */ struct xfs_agf *agf; /* ag freelist header */
struct xfs_perag *pag; /* per allocation group data */ struct xfs_perag *pag; /* per allocation group data */
int error; int error;
...@@ -3118,13 +3102,12 @@ xfs_alloc_read_agf( ...@@ -3118,13 +3102,12 @@ xfs_alloc_read_agf(
ASSERT(agno != NULLAGNUMBER); ASSERT(agno != NULLAGNUMBER);
error = xfs_read_agf(mp, tp, agno, error = xfs_read_agf(mp, tp, agno,
(flags & XFS_ALLOC_FLAG_TRYLOCK) ? XBF_TRYLOCK : 0, (flags & XFS_ALLOC_FLAG_TRYLOCK) ? XBF_TRYLOCK : 0,
bpp); &agfbp);
if (error) if (error)
return error; return error;
ASSERT(!(*bpp)->b_error);
agf = (*bpp)->b_addr; agf = agfbp->b_addr;
pag = (*bpp)->b_pag; pag = agfbp->b_pag;
if (!pag->pagf_init) { if (!pag->pagf_init) {
pag->pagf_freeblks = be32_to_cpu(agf->agf_freeblks); pag->pagf_freeblks = be32_to_cpu(agf->agf_freeblks);
pag->pagf_btreeblks = be32_to_cpu(agf->agf_btreeblks); pag->pagf_btreeblks = be32_to_cpu(agf->agf_btreeblks);
...@@ -3165,6 +3148,10 @@ xfs_alloc_read_agf( ...@@ -3165,6 +3148,10 @@ xfs_alloc_read_agf(
be32_to_cpu(agf->agf_levels[XFS_BTNUM_CNTi])); be32_to_cpu(agf->agf_levels[XFS_BTNUM_CNTi]));
} }
#endif #endif
if (agfbpp)
*agfbpp = agfbp;
else
xfs_trans_brelse(tp, agfbp);
return 0; return 0;
} }
......
...@@ -123,16 +123,6 @@ xfs_alloc_log_agf( ...@@ -123,16 +123,6 @@ xfs_alloc_log_agf(
struct xfs_buf *bp, /* buffer for a.g. freelist header */ struct xfs_buf *bp, /* buffer for a.g. freelist header */
uint32_t fields);/* mask of fields to be logged (XFS_AGF_...) */ uint32_t fields);/* mask of fields to be logged (XFS_AGF_...) */
/*
* Interface for inode allocation to force the pag data to be initialized.
*/
int /* error */
xfs_alloc_pagf_init(
struct xfs_mount *mp, /* file system mount structure */
struct xfs_trans *tp, /* transaction pointer */
xfs_agnumber_t agno, /* allocation group number */
int flags); /* XFS_ALLOC_FLAGS_... */
/* /*
* Put the block on the freelist for the allocation group. * Put the block on the freelist for the allocation group.
*/ */
......
...@@ -3185,7 +3185,8 @@ xfs_bmap_longest_free_extent( ...@@ -3185,7 +3185,8 @@ xfs_bmap_longest_free_extent(
pag = xfs_perag_get(mp, ag); pag = xfs_perag_get(mp, ag);
if (!pag->pagf_init) { if (!pag->pagf_init) {
error = xfs_alloc_pagf_init(mp, tp, ag, XFS_ALLOC_FLAG_TRYLOCK); error = xfs_alloc_read_agf(mp, tp, ag, XFS_ALLOC_FLAG_TRYLOCK,
NULL);
if (error) { if (error) {
/* Couldn't lock the AGF, so skip this AG. */ /* Couldn't lock the AGF, so skip this AG. */
if (error == -EAGAIN) { if (error == -EAGAIN) {
......
...@@ -1621,7 +1621,7 @@ xfs_dialloc_good_ag( ...@@ -1621,7 +1621,7 @@ xfs_dialloc_good_ag(
return false; return false;
if (!pag->pagf_init) { if (!pag->pagf_init) {
error = xfs_alloc_pagf_init(mp, tp, pag->pag_agno, flags); error = xfs_alloc_read_agf(mp, tp, pag->pag_agno, flags, NULL);
if (error) if (error)
return false; return false;
} }
......
...@@ -126,7 +126,7 @@ xfs_filestream_pick_ag( ...@@ -126,7 +126,7 @@ xfs_filestream_pick_ag(
pag = xfs_perag_get(mp, ag); pag = xfs_perag_get(mp, ag);
if (!pag->pagf_init) { if (!pag->pagf_init) {
err = xfs_alloc_pagf_init(mp, NULL, ag, trylock); err = xfs_alloc_read_agf(mp, NULL, ag, trylock, NULL);
if (err) { if (err) {
if (err != -EAGAIN) { if (err != -EAGAIN) {
xfs_perag_put(pag); xfs_perag_put(pag);
...@@ -181,7 +181,7 @@ xfs_filestream_pick_ag( ...@@ -181,7 +181,7 @@ xfs_filestream_pick_ag(
if (ag != startag) if (ag != startag)
continue; continue;
/* Allow sleeping in xfs_alloc_pagf_init() on the 2nd pass. */ /* Allow sleeping in xfs_alloc_read_agf() on the 2nd pass. */
if (trylock != 0) { if (trylock != 0) {
trylock = 0; trylock = 0;
continue; continue;
......
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