xfs: remove XFS_BUF_TO_AGF

Just dereference bp->b_addr directly and make the code a little
simpler and more clear.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Eric Sandeen <sandeen@redhat.com>
Reviewed-by: Brian Foster <bfoster@redhat.com>
Reviewed-by: Darrick J. Wong <darrick.wong@oracle.com>
Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
This commit is contained in:
Christoph Hellwig 2020-03-10 08:57:29 -07:00 committed by Darrick J. Wong
parent 370c782b98
commit 9798f615ad
11 changed files with 68 additions and 72 deletions

View File

@ -243,7 +243,7 @@ xfs_agfblock_init(
struct xfs_buf *bp, struct xfs_buf *bp,
struct aghdr_init_data *id) struct aghdr_init_data *id)
{ {
struct xfs_agf *agf = XFS_BUF_TO_AGF(bp); struct xfs_agf *agf = bp->b_addr;
xfs_extlen_t tmpsize; xfs_extlen_t tmpsize;
agf->agf_magicnum = cpu_to_be32(XFS_AGF_MAGIC); agf->agf_magicnum = cpu_to_be32(XFS_AGF_MAGIC);
@ -515,7 +515,7 @@ xfs_ag_extend_space(
if (error) if (error)
return error; return error;
agf = XFS_BUF_TO_AGF(bp); agf = bp->b_addr;
be32_add_cpu(&agf->agf_length, len); be32_add_cpu(&agf->agf_length, len);
ASSERT(agf->agf_length == agi->agi_length); ASSERT(agf->agf_length == agi->agi_length);
xfs_alloc_log_agf(tp, bp, XFS_AGF_LENGTH); xfs_alloc_log_agf(tp, bp, XFS_AGF_LENGTH);
@ -573,7 +573,7 @@ xfs_ag_get_geometry(
ageo->ag_icount = be32_to_cpu(agi->agi_count); ageo->ag_icount = be32_to_cpu(agi->agi_count);
ageo->ag_ifree = be32_to_cpu(agi->agi_freecount); ageo->ag_ifree = be32_to_cpu(agi->agi_freecount);
agf = XFS_BUF_TO_AGF(agf_bp); agf = agf_bp->b_addr;
ageo->ag_length = be32_to_cpu(agf->agf_length); ageo->ag_length = be32_to_cpu(agf->agf_length);
freeblks = pag->pagf_freeblks + freeblks = pag->pagf_freeblks +
pag->pagf_flcount + pag->pagf_flcount +

View File

@ -714,7 +714,7 @@ xfs_alloc_update_counters(
struct xfs_buf *agbp, struct xfs_buf *agbp,
long len) long len)
{ {
struct xfs_agf *agf = XFS_BUF_TO_AGF(agbp); struct xfs_agf *agf = agbp->b_addr;
pag->pagf_freeblks += len; pag->pagf_freeblks += len;
be32_add_cpu(&agf->agf_freeblks, len); be32_add_cpu(&agf->agf_freeblks, len);
@ -923,13 +923,13 @@ xfs_alloc_cur_finish(
struct xfs_alloc_arg *args, struct xfs_alloc_arg *args,
struct xfs_alloc_cur *acur) struct xfs_alloc_cur *acur)
{ {
struct xfs_agf __maybe_unused *agf = args->agbp->b_addr;
int error; int error;
ASSERT(acur->cnt && acur->bnolt); ASSERT(acur->cnt && acur->bnolt);
ASSERT(acur->bno >= acur->rec_bno); ASSERT(acur->bno >= acur->rec_bno);
ASSERT(acur->bno + acur->len <= acur->rec_bno + acur->rec_len); ASSERT(acur->bno + acur->len <= acur->rec_bno + acur->rec_len);
ASSERT(acur->rec_bno + acur->rec_len <= ASSERT(acur->rec_bno + acur->rec_len <= be32_to_cpu(agf->agf_length));
be32_to_cpu(XFS_BUF_TO_AGF(args->agbp)->agf_length));
error = xfs_alloc_fixup_trees(acur->cnt, acur->bnolt, acur->rec_bno, error = xfs_alloc_fixup_trees(acur->cnt, acur->bnolt, acur->rec_bno,
acur->rec_len, acur->bno, acur->len, 0); acur->rec_len, acur->bno, acur->len, 0);
@ -1027,6 +1027,7 @@ xfs_alloc_ag_vextent_small(
xfs_extlen_t *flenp, /* result length */ xfs_extlen_t *flenp, /* result length */
int *stat) /* status: 0-freelist, 1-normal/none */ int *stat) /* status: 0-freelist, 1-normal/none */
{ {
struct xfs_agf *agf = args->agbp->b_addr;
int error = 0; int error = 0;
xfs_agblock_t fbno = NULLAGBLOCK; xfs_agblock_t fbno = NULLAGBLOCK;
xfs_extlen_t flen = 0; xfs_extlen_t flen = 0;
@ -1055,8 +1056,7 @@ xfs_alloc_ag_vextent_small(
if (args->minlen != 1 || args->alignment != 1 || if (args->minlen != 1 || args->alignment != 1 ||
args->resv == XFS_AG_RESV_AGFL || args->resv == XFS_AG_RESV_AGFL ||
(be32_to_cpu(XFS_BUF_TO_AGF(args->agbp)->agf_flcount) <= be32_to_cpu(agf->agf_flcount) <= args->minleft)
args->minleft))
goto out; goto out;
error = xfs_alloc_get_freelist(args->tp, args->agbp, &fbno, 0); error = xfs_alloc_get_freelist(args->tp, args->agbp, &fbno, 0);
@ -1080,9 +1080,7 @@ xfs_alloc_ag_vextent_small(
} }
*fbnop = args->agbno = fbno; *fbnop = args->agbno = fbno;
*flenp = args->len = 1; *flenp = args->len = 1;
if (XFS_IS_CORRUPT(args->mp, if (XFS_IS_CORRUPT(args->mp, fbno >= be32_to_cpu(agf->agf_length))) {
fbno >= be32_to_cpu(
XFS_BUF_TO_AGF(args->agbp)->agf_length))) {
error = -EFSCORRUPTED; error = -EFSCORRUPTED;
goto error; goto error;
} }
@ -1204,6 +1202,7 @@ STATIC int /* error */
xfs_alloc_ag_vextent_exact( xfs_alloc_ag_vextent_exact(
xfs_alloc_arg_t *args) /* allocation argument structure */ xfs_alloc_arg_t *args) /* allocation argument structure */
{ {
struct xfs_agf __maybe_unused *agf = args->agbp->b_addr;
xfs_btree_cur_t *bno_cur;/* by block-number btree cursor */ xfs_btree_cur_t *bno_cur;/* by block-number btree cursor */
xfs_btree_cur_t *cnt_cur;/* by count btree cursor */ xfs_btree_cur_t *cnt_cur;/* by count btree cursor */
int error; int error;
@ -1282,8 +1281,7 @@ xfs_alloc_ag_vextent_exact(
*/ */
cnt_cur = xfs_allocbt_init_cursor(args->mp, args->tp, args->agbp, cnt_cur = xfs_allocbt_init_cursor(args->mp, args->tp, args->agbp,
args->agno, XFS_BTNUM_CNT); args->agno, XFS_BTNUM_CNT);
ASSERT(args->agbno + args->len <= ASSERT(args->agbno + args->len <= be32_to_cpu(agf->agf_length));
be32_to_cpu(XFS_BUF_TO_AGF(args->agbp)->agf_length));
error = xfs_alloc_fixup_trees(cnt_cur, bno_cur, fbno, flen, args->agbno, error = xfs_alloc_fixup_trees(cnt_cur, bno_cur, fbno, flen, args->agbno,
args->len, XFSA_FIXUP_BNO_OK); args->len, XFSA_FIXUP_BNO_OK);
if (error) { if (error) {
@ -1662,6 +1660,7 @@ STATIC int /* error */
xfs_alloc_ag_vextent_size( xfs_alloc_ag_vextent_size(
xfs_alloc_arg_t *args) /* allocation argument structure */ xfs_alloc_arg_t *args) /* allocation argument structure */
{ {
struct xfs_agf *agf = args->agbp->b_addr;
xfs_btree_cur_t *bno_cur; /* cursor for bno btree */ xfs_btree_cur_t *bno_cur; /* cursor for bno btree */
xfs_btree_cur_t *cnt_cur; /* cursor for cnt btree */ xfs_btree_cur_t *cnt_cur; /* cursor for cnt btree */
int error; /* error result */ int error; /* error result */
@ -1852,8 +1851,7 @@ xfs_alloc_ag_vextent_size(
args->agbno = rbno; args->agbno = rbno;
if (XFS_IS_CORRUPT(args->mp, if (XFS_IS_CORRUPT(args->mp,
args->agbno + args->len > args->agbno + args->len >
be32_to_cpu( be32_to_cpu(agf->agf_length))) {
XFS_BUF_TO_AGF(args->agbp)->agf_length))) {
error = -EFSCORRUPTED; error = -EFSCORRUPTED;
goto error0; goto error0;
} }
@ -2425,7 +2423,7 @@ xfs_agfl_reset(
struct xfs_perag *pag) struct xfs_perag *pag)
{ {
struct xfs_mount *mp = tp->t_mountp; struct xfs_mount *mp = tp->t_mountp;
struct xfs_agf *agf = XFS_BUF_TO_AGF(agbp); struct xfs_agf *agf = agbp->b_addr;
ASSERT(pag->pagf_agflreset); ASSERT(pag->pagf_agflreset);
trace_xfs_agfl_reset(mp, agf, 0, _RET_IP_); trace_xfs_agfl_reset(mp, agf, 0, _RET_IP_);
@ -2656,7 +2654,7 @@ xfs_alloc_get_freelist(
xfs_agblock_t *bnop, /* block address retrieved from freelist */ xfs_agblock_t *bnop, /* block address retrieved from freelist */
int btreeblk) /* destination is a AGF btree */ int btreeblk) /* destination is a AGF btree */
{ {
xfs_agf_t *agf; /* a.g. freespace structure */ struct xfs_agf *agf = agbp->b_addr;
xfs_buf_t *agflbp;/* buffer for a.g. freelist structure */ xfs_buf_t *agflbp;/* buffer for a.g. freelist structure */
xfs_agblock_t bno; /* block number returned */ xfs_agblock_t bno; /* block number returned */
__be32 *agfl_bno; __be32 *agfl_bno;
@ -2668,7 +2666,6 @@ xfs_alloc_get_freelist(
/* /*
* Freelist is empty, give up. * Freelist is empty, give up.
*/ */
agf = XFS_BUF_TO_AGF(agbp);
if (!agf->agf_flcount) { if (!agf->agf_flcount) {
*bnop = NULLAGBLOCK; *bnop = NULLAGBLOCK;
return 0; return 0;
@ -2746,7 +2743,7 @@ xfs_alloc_log_agf(
sizeof(xfs_agf_t) sizeof(xfs_agf_t)
}; };
trace_xfs_agf(tp->t_mountp, XFS_BUF_TO_AGF(bp), fields, _RET_IP_); trace_xfs_agf(tp->t_mountp, bp->b_addr, fields, _RET_IP_);
xfs_trans_buf_set_type(tp, bp, XFS_BLFT_AGF_BUF); xfs_trans_buf_set_type(tp, bp, XFS_BLFT_AGF_BUF);
@ -2784,18 +2781,15 @@ xfs_alloc_put_freelist(
xfs_agblock_t bno, /* block being freed */ xfs_agblock_t bno, /* block being freed */
int btreeblk) /* block came from a AGF btree */ int btreeblk) /* block came from a AGF btree */
{ {
xfs_agf_t *agf; /* a.g. freespace structure */ struct xfs_mount *mp = tp->t_mountp;
struct xfs_agf *agf = agbp->b_addr;
__be32 *blockp;/* pointer to array entry */ __be32 *blockp;/* pointer to array entry */
int error; int error;
int logflags; int logflags;
xfs_mount_t *mp; /* mount structure */
xfs_perag_t *pag; /* per allocation group data */ xfs_perag_t *pag; /* per allocation group data */
__be32 *agfl_bno; __be32 *agfl_bno;
int startoff; int startoff;
agf = XFS_BUF_TO_AGF(agbp);
mp = tp->t_mountp;
if (!agflbp && (error = xfs_alloc_read_agfl(mp, tp, if (!agflbp && (error = xfs_alloc_read_agfl(mp, tp,
be32_to_cpu(agf->agf_seqno), &agflbp))) be32_to_cpu(agf->agf_seqno), &agflbp)))
return error; return error;
@ -2839,13 +2833,12 @@ xfs_agf_verify(
struct xfs_buf *bp) struct xfs_buf *bp)
{ {
struct xfs_mount *mp = bp->b_mount; struct xfs_mount *mp = bp->b_mount;
struct xfs_agf *agf = XFS_BUF_TO_AGF(bp); struct xfs_agf *agf = bp->b_addr;
if (xfs_sb_version_hascrc(&mp->m_sb)) { if (xfs_sb_version_hascrc(&mp->m_sb)) {
if (!uuid_equal(&agf->agf_uuid, &mp->m_sb.sb_meta_uuid)) if (!uuid_equal(&agf->agf_uuid, &mp->m_sb.sb_meta_uuid))
return __this_address; return __this_address;
if (!xfs_log_check_lsn(mp, if (!xfs_log_check_lsn(mp, be64_to_cpu(agf->agf_lsn)))
be64_to_cpu(XFS_BUF_TO_AGF(bp)->agf_lsn)))
return __this_address; return __this_address;
} }
@ -2931,6 +2924,7 @@ xfs_agf_write_verify(
{ {
struct xfs_mount *mp = bp->b_mount; struct xfs_mount *mp = bp->b_mount;
struct xfs_buf_log_item *bip = bp->b_log_item; struct xfs_buf_log_item *bip = bp->b_log_item;
struct xfs_agf *agf = bp->b_addr;
xfs_failaddr_t fa; xfs_failaddr_t fa;
fa = xfs_agf_verify(bp); fa = xfs_agf_verify(bp);
@ -2943,7 +2937,7 @@ xfs_agf_write_verify(
return; return;
if (bip) if (bip)
XFS_BUF_TO_AGF(bp)->agf_lsn = cpu_to_be64(bip->bli_item.li_lsn); agf->agf_lsn = cpu_to_be64(bip->bli_item.li_lsn);
xfs_buf_update_cksum(bp, XFS_AGF_CRC_OFF); xfs_buf_update_cksum(bp, XFS_AGF_CRC_OFF);
} }
@ -3011,7 +3005,7 @@ xfs_alloc_read_agf(
return error; return error;
ASSERT(!(*bpp)->b_error); ASSERT(!(*bpp)->b_error);
agf = XFS_BUF_TO_AGF(*bpp); agf = (*bpp)->b_addr;
pag = xfs_perag_get(mp, agno); pag = xfs_perag_get(mp, agno);
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);
@ -3292,6 +3286,7 @@ __xfs_free_extent(
struct xfs_buf *agbp; struct xfs_buf *agbp;
xfs_agnumber_t agno = XFS_FSB_TO_AGNO(mp, bno); xfs_agnumber_t agno = XFS_FSB_TO_AGNO(mp, bno);
xfs_agblock_t agbno = XFS_FSB_TO_AGBNO(mp, bno); xfs_agblock_t agbno = XFS_FSB_TO_AGBNO(mp, bno);
struct xfs_agf *agf;
int error; int error;
unsigned int busy_flags = 0; unsigned int busy_flags = 0;
@ -3305,6 +3300,7 @@ __xfs_free_extent(
error = xfs_free_extent_fix_freelist(tp, agno, &agbp); error = xfs_free_extent_fix_freelist(tp, agno, &agbp);
if (error) if (error)
return error; return error;
agf = agbp->b_addr;
if (XFS_IS_CORRUPT(mp, agbno >= mp->m_sb.sb_agblocks)) { if (XFS_IS_CORRUPT(mp, agbno >= mp->m_sb.sb_agblocks)) {
error = -EFSCORRUPTED; error = -EFSCORRUPTED;
@ -3312,9 +3308,7 @@ __xfs_free_extent(
} }
/* validate the extent size is legal now we have the agf locked */ /* validate the extent size is legal now we have the agf locked */
if (XFS_IS_CORRUPT(mp, if (XFS_IS_CORRUPT(mp, agbno + len > be32_to_cpu(agf->agf_length))) {
agbno + len >
be32_to_cpu(XFS_BUF_TO_AGF(agbp)->agf_length))) {
error = -EFSCORRUPTED; error = -EFSCORRUPTED;
goto err; goto err;
} }

View File

@ -36,7 +36,7 @@ xfs_allocbt_set_root(
int inc) int inc)
{ {
struct xfs_buf *agbp = cur->bc_private.a.agbp; struct xfs_buf *agbp = cur->bc_private.a.agbp;
struct xfs_agf *agf = XFS_BUF_TO_AGF(agbp); struct xfs_agf *agf = agbp->b_addr;
xfs_agnumber_t seqno = be32_to_cpu(agf->agf_seqno); xfs_agnumber_t seqno = be32_to_cpu(agf->agf_seqno);
int btnum = cur->bc_btnum; int btnum = cur->bc_btnum;
struct xfs_perag *pag = xfs_perag_get(cur->bc_mp, seqno); struct xfs_perag *pag = xfs_perag_get(cur->bc_mp, seqno);
@ -87,7 +87,7 @@ xfs_allocbt_free_block(
struct xfs_buf *bp) struct xfs_buf *bp)
{ {
struct xfs_buf *agbp = cur->bc_private.a.agbp; struct xfs_buf *agbp = cur->bc_private.a.agbp;
struct xfs_agf *agf = XFS_BUF_TO_AGF(agbp); struct xfs_agf *agf = agbp->b_addr;
xfs_agblock_t bno; xfs_agblock_t bno;
int error; int error;
@ -113,7 +113,7 @@ xfs_allocbt_update_lastrec(
int ptr, int ptr,
int reason) int reason)
{ {
struct xfs_agf *agf = XFS_BUF_TO_AGF(cur->bc_private.a.agbp); struct xfs_agf *agf = cur->bc_private.a.agbp->b_addr;
xfs_agnumber_t seqno = be32_to_cpu(agf->agf_seqno); xfs_agnumber_t seqno = be32_to_cpu(agf->agf_seqno);
struct xfs_perag *pag; struct xfs_perag *pag;
__be32 len; __be32 len;
@ -226,7 +226,7 @@ xfs_allocbt_init_ptr_from_cur(
struct xfs_btree_cur *cur, struct xfs_btree_cur *cur,
union xfs_btree_ptr *ptr) union xfs_btree_ptr *ptr)
{ {
struct xfs_agf *agf = XFS_BUF_TO_AGF(cur->bc_private.a.agbp); struct xfs_agf *agf = cur->bc_private.a.agbp->b_addr;
ASSERT(cur->bc_private.a.agno == be32_to_cpu(agf->agf_seqno)); ASSERT(cur->bc_private.a.agno == be32_to_cpu(agf->agf_seqno));
@ -482,7 +482,7 @@ xfs_allocbt_init_cursor(
xfs_agnumber_t agno, /* allocation group number */ xfs_agnumber_t agno, /* allocation group number */
xfs_btnum_t btnum) /* btree identifier */ xfs_btnum_t btnum) /* btree identifier */
{ {
struct xfs_agf *agf = XFS_BUF_TO_AGF(agbp); struct xfs_agf *agf = agbp->b_addr;
struct xfs_btree_cur *cur; struct xfs_btree_cur *cur;
ASSERT(btnum == XFS_BTNUM_BNO || btnum == XFS_BTNUM_CNT); ASSERT(btnum == XFS_BTNUM_BNO || btnum == XFS_BTNUM_CNT);

View File

@ -707,7 +707,6 @@ typedef struct xfs_agf {
/* disk block (xfs_daddr_t) in the AG */ /* disk block (xfs_daddr_t) in the AG */
#define XFS_AGF_DADDR(mp) ((xfs_daddr_t)(1 << (mp)->m_sectbb_log)) #define XFS_AGF_DADDR(mp) ((xfs_daddr_t)(1 << (mp)->m_sectbb_log))
#define XFS_AGF_BLOCK(mp) XFS_HDR_BLOCK(mp, XFS_AGF_DADDR(mp)) #define XFS_AGF_BLOCK(mp) XFS_HDR_BLOCK(mp, XFS_AGF_DADDR(mp))
#define XFS_BUF_TO_AGF(bp) ((xfs_agf_t *)((bp)->b_addr))
/* /*
* Size of the unlinked inode hash table in the agi. * Size of the unlinked inode hash table in the agi.

View File

@ -35,7 +35,7 @@ xfs_refcountbt_set_root(
int inc) int inc)
{ {
struct xfs_buf *agbp = cur->bc_private.a.agbp; struct xfs_buf *agbp = cur->bc_private.a.agbp;
struct xfs_agf *agf = XFS_BUF_TO_AGF(agbp); struct xfs_agf *agf = agbp->b_addr;
xfs_agnumber_t seqno = be32_to_cpu(agf->agf_seqno); xfs_agnumber_t seqno = be32_to_cpu(agf->agf_seqno);
struct xfs_perag *pag = xfs_perag_get(cur->bc_mp, seqno); struct xfs_perag *pag = xfs_perag_get(cur->bc_mp, seqno);
@ -58,7 +58,7 @@ xfs_refcountbt_alloc_block(
int *stat) int *stat)
{ {
struct xfs_buf *agbp = cur->bc_private.a.agbp; struct xfs_buf *agbp = cur->bc_private.a.agbp;
struct xfs_agf *agf = XFS_BUF_TO_AGF(agbp); struct xfs_agf *agf = agbp->b_addr;
struct xfs_alloc_arg args; /* block allocation args */ struct xfs_alloc_arg args; /* block allocation args */
int error; /* error return value */ int error; /* error return value */
@ -102,7 +102,7 @@ xfs_refcountbt_free_block(
{ {
struct xfs_mount *mp = cur->bc_mp; struct xfs_mount *mp = cur->bc_mp;
struct xfs_buf *agbp = cur->bc_private.a.agbp; struct xfs_buf *agbp = cur->bc_private.a.agbp;
struct xfs_agf *agf = XFS_BUF_TO_AGF(agbp); struct xfs_agf *agf = agbp->b_addr;
xfs_fsblock_t fsbno = XFS_DADDR_TO_FSB(mp, XFS_BUF_ADDR(bp)); xfs_fsblock_t fsbno = XFS_DADDR_TO_FSB(mp, XFS_BUF_ADDR(bp));
int error; int error;
@ -169,7 +169,7 @@ xfs_refcountbt_init_ptr_from_cur(
struct xfs_btree_cur *cur, struct xfs_btree_cur *cur,
union xfs_btree_ptr *ptr) union xfs_btree_ptr *ptr)
{ {
struct xfs_agf *agf = XFS_BUF_TO_AGF(cur->bc_private.a.agbp); struct xfs_agf *agf = cur->bc_private.a.agbp->b_addr;
ASSERT(cur->bc_private.a.agno == be32_to_cpu(agf->agf_seqno)); ASSERT(cur->bc_private.a.agno == be32_to_cpu(agf->agf_seqno));
@ -320,7 +320,7 @@ xfs_refcountbt_init_cursor(
struct xfs_buf *agbp, struct xfs_buf *agbp,
xfs_agnumber_t agno) xfs_agnumber_t agno)
{ {
struct xfs_agf *agf = XFS_BUF_TO_AGF(agbp); struct xfs_agf *agf = agbp->b_addr;
struct xfs_btree_cur *cur; struct xfs_btree_cur *cur;
ASSERT(agno != NULLAGNUMBER); ASSERT(agno != NULLAGNUMBER);
@ -420,7 +420,7 @@ xfs_refcountbt_calc_reserves(
if (error) if (error)
return error; return error;
agf = XFS_BUF_TO_AGF(agbp); agf = agbp->b_addr;
agblocks = be32_to_cpu(agf->agf_length); agblocks = be32_to_cpu(agf->agf_length);
tree_len = be32_to_cpu(agf->agf_refcount_blocks); tree_len = be32_to_cpu(agf->agf_refcount_blocks);
xfs_trans_brelse(tp, agbp); xfs_trans_brelse(tp, agbp);

View File

@ -61,7 +61,7 @@ xfs_rmapbt_set_root(
int inc) int inc)
{ {
struct xfs_buf *agbp = cur->bc_private.a.agbp; struct xfs_buf *agbp = cur->bc_private.a.agbp;
struct xfs_agf *agf = XFS_BUF_TO_AGF(agbp); struct xfs_agf *agf = agbp->b_addr;
xfs_agnumber_t seqno = be32_to_cpu(agf->agf_seqno); xfs_agnumber_t seqno = be32_to_cpu(agf->agf_seqno);
int btnum = cur->bc_btnum; int btnum = cur->bc_btnum;
struct xfs_perag *pag = xfs_perag_get(cur->bc_mp, seqno); struct xfs_perag *pag = xfs_perag_get(cur->bc_mp, seqno);
@ -84,7 +84,7 @@ xfs_rmapbt_alloc_block(
int *stat) int *stat)
{ {
struct xfs_buf *agbp = cur->bc_private.a.agbp; struct xfs_buf *agbp = cur->bc_private.a.agbp;
struct xfs_agf *agf = XFS_BUF_TO_AGF(agbp); struct xfs_agf *agf = agbp->b_addr;
int error; int error;
xfs_agblock_t bno; xfs_agblock_t bno;
@ -121,7 +121,7 @@ xfs_rmapbt_free_block(
struct xfs_buf *bp) struct xfs_buf *bp)
{ {
struct xfs_buf *agbp = cur->bc_private.a.agbp; struct xfs_buf *agbp = cur->bc_private.a.agbp;
struct xfs_agf *agf = XFS_BUF_TO_AGF(agbp); struct xfs_agf *agf = agbp->b_addr;
xfs_agblock_t bno; xfs_agblock_t bno;
int error; int error;
@ -215,7 +215,7 @@ xfs_rmapbt_init_ptr_from_cur(
struct xfs_btree_cur *cur, struct xfs_btree_cur *cur,
union xfs_btree_ptr *ptr) union xfs_btree_ptr *ptr)
{ {
struct xfs_agf *agf = XFS_BUF_TO_AGF(cur->bc_private.a.agbp); struct xfs_agf *agf = cur->bc_private.a.agbp->b_addr;
ASSERT(cur->bc_private.a.agno == be32_to_cpu(agf->agf_seqno)); ASSERT(cur->bc_private.a.agno == be32_to_cpu(agf->agf_seqno));
@ -458,7 +458,7 @@ xfs_rmapbt_init_cursor(
struct xfs_buf *agbp, struct xfs_buf *agbp,
xfs_agnumber_t agno) xfs_agnumber_t agno)
{ {
struct xfs_agf *agf = XFS_BUF_TO_AGF(agbp); struct xfs_agf *agf = agbp->b_addr;
struct xfs_btree_cur *cur; struct xfs_btree_cur *cur;
cur = kmem_zone_zalloc(xfs_btree_cur_zone, KM_NOFS); cur = kmem_zone_zalloc(xfs_btree_cur_zone, KM_NOFS);
@ -569,7 +569,7 @@ xfs_rmapbt_calc_reserves(
if (error) if (error)
return error; return error;
agf = XFS_BUF_TO_AGF(agbp); agf = agbp->b_addr;
agblocks = be32_to_cpu(agf->agf_length); agblocks = be32_to_cpu(agf->agf_length);
tree_len = be32_to_cpu(agf->agf_rmap_blocks); tree_len = be32_to_cpu(agf->agf_rmap_blocks);
xfs_trans_brelse(tp, agbp); xfs_trans_brelse(tp, agbp);

View File

@ -358,7 +358,7 @@ static inline void
xchk_agf_xref_freeblks( xchk_agf_xref_freeblks(
struct xfs_scrub *sc) struct xfs_scrub *sc)
{ {
struct xfs_agf *agf = XFS_BUF_TO_AGF(sc->sa.agf_bp); struct xfs_agf *agf = sc->sa.agf_bp->b_addr;
xfs_extlen_t blocks = 0; xfs_extlen_t blocks = 0;
int error; int error;
@ -378,7 +378,7 @@ static inline void
xchk_agf_xref_cntbt( xchk_agf_xref_cntbt(
struct xfs_scrub *sc) struct xfs_scrub *sc)
{ {
struct xfs_agf *agf = XFS_BUF_TO_AGF(sc->sa.agf_bp); struct xfs_agf *agf = sc->sa.agf_bp->b_addr;
xfs_agblock_t agbno; xfs_agblock_t agbno;
xfs_extlen_t blocks; xfs_extlen_t blocks;
int have; int have;
@ -410,7 +410,7 @@ STATIC void
xchk_agf_xref_btreeblks( xchk_agf_xref_btreeblks(
struct xfs_scrub *sc) struct xfs_scrub *sc)
{ {
struct xfs_agf *agf = XFS_BUF_TO_AGF(sc->sa.agf_bp); struct xfs_agf *agf = sc->sa.agf_bp->b_addr;
struct xfs_mount *mp = sc->mp; struct xfs_mount *mp = sc->mp;
xfs_agblock_t blocks; xfs_agblock_t blocks;
xfs_agblock_t btreeblks; xfs_agblock_t btreeblks;
@ -456,7 +456,7 @@ static inline void
xchk_agf_xref_refcblks( xchk_agf_xref_refcblks(
struct xfs_scrub *sc) struct xfs_scrub *sc)
{ {
struct xfs_agf *agf = XFS_BUF_TO_AGF(sc->sa.agf_bp); struct xfs_agf *agf = sc->sa.agf_bp->b_addr;
xfs_agblock_t blocks; xfs_agblock_t blocks;
int error; int error;
@ -525,7 +525,7 @@ xchk_agf(
goto out; goto out;
xchk_buffer_recheck(sc, sc->sa.agf_bp); xchk_buffer_recheck(sc, sc->sa.agf_bp);
agf = XFS_BUF_TO_AGF(sc->sa.agf_bp); agf = sc->sa.agf_bp->b_addr;
/* Check the AG length */ /* Check the AG length */
eoag = be32_to_cpu(agf->agf_length); eoag = be32_to_cpu(agf->agf_length);
@ -711,7 +711,7 @@ xchk_agfl(
goto out; goto out;
/* Allocate buffer to ensure uniqueness of AGFL entries. */ /* Allocate buffer to ensure uniqueness of AGFL entries. */
agf = XFS_BUF_TO_AGF(sc->sa.agf_bp); agf = sc->sa.agf_bp->b_addr;
agflcount = be32_to_cpu(agf->agf_flcount); agflcount = be32_to_cpu(agf->agf_flcount);
if (agflcount > xfs_agfl_size(sc->mp)) { if (agflcount > xfs_agfl_size(sc->mp)) {
xchk_block_set_corrupt(sc, sc->sa.agf_bp); xchk_block_set_corrupt(sc, sc->sa.agf_bp);
@ -728,7 +728,7 @@ xchk_agfl(
} }
/* Check the blocks in the AGFL. */ /* Check the blocks in the AGFL. */
error = xfs_agfl_walk(sc->mp, XFS_BUF_TO_AGF(sc->sa.agf_bp), error = xfs_agfl_walk(sc->mp, sc->sa.agf_bp->b_addr,
sc->sa.agfl_bp, xchk_agfl_block, &sai); sc->sa.agfl_bp, xchk_agfl_block, &sai);
if (error == -ECANCELED) { if (error == -ECANCELED) {
error = 0; error = 0;

View File

@ -140,7 +140,7 @@ xrep_agf_find_btrees(
struct xrep_find_ag_btree *fab, struct xrep_find_ag_btree *fab,
struct xfs_buf *agfl_bp) struct xfs_buf *agfl_bp)
{ {
struct xfs_agf *old_agf = XFS_BUF_TO_AGF(agf_bp); struct xfs_agf *old_agf = agf_bp->b_addr;
int error; int error;
/* Go find the root data. */ /* Go find the root data. */
@ -181,7 +181,7 @@ xrep_agf_init_header(
struct xfs_agf *old_agf) struct xfs_agf *old_agf)
{ {
struct xfs_mount *mp = sc->mp; struct xfs_mount *mp = sc->mp;
struct xfs_agf *agf = XFS_BUF_TO_AGF(agf_bp); struct xfs_agf *agf = agf_bp->b_addr;
memcpy(old_agf, agf, sizeof(*old_agf)); memcpy(old_agf, agf, sizeof(*old_agf));
memset(agf, 0, BBTOB(agf_bp->b_length)); memset(agf, 0, BBTOB(agf_bp->b_length));
@ -238,7 +238,7 @@ xrep_agf_calc_from_btrees(
{ {
struct xrep_agf_allocbt raa = { .sc = sc }; struct xrep_agf_allocbt raa = { .sc = sc };
struct xfs_btree_cur *cur = NULL; struct xfs_btree_cur *cur = NULL;
struct xfs_agf *agf = XFS_BUF_TO_AGF(agf_bp); struct xfs_agf *agf = agf_bp->b_addr;
struct xfs_mount *mp = sc->mp; struct xfs_mount *mp = sc->mp;
xfs_agblock_t btreeblks; xfs_agblock_t btreeblks;
xfs_agblock_t blocks; xfs_agblock_t blocks;
@ -302,7 +302,7 @@ xrep_agf_commit_new(
struct xfs_buf *agf_bp) struct xfs_buf *agf_bp)
{ {
struct xfs_perag *pag; struct xfs_perag *pag;
struct xfs_agf *agf = XFS_BUF_TO_AGF(agf_bp); struct xfs_agf *agf = agf_bp->b_addr;
/* Trigger fdblocks recalculation */ /* Trigger fdblocks recalculation */
xfs_force_summary_recalc(sc->mp); xfs_force_summary_recalc(sc->mp);
@ -376,7 +376,7 @@ xrep_agf(
if (error) if (error)
return error; return error;
agf_bp->b_ops = &xfs_agf_buf_ops; agf_bp->b_ops = &xfs_agf_buf_ops;
agf = XFS_BUF_TO_AGF(agf_bp); agf = agf_bp->b_addr;
/* /*
* Load the AGFL so that we can screen out OWN_AG blocks that are on * Load the AGFL so that we can screen out OWN_AG blocks that are on
@ -395,7 +395,7 @@ xrep_agf(
* Spot-check the AGFL blocks; if they're obviously corrupt then * Spot-check the AGFL blocks; if they're obviously corrupt then
* there's nothing we can do but bail out. * there's nothing we can do but bail out.
*/ */
error = xfs_agfl_walk(sc->mp, XFS_BUF_TO_AGF(agf_bp), agfl_bp, error = xfs_agfl_walk(sc->mp, agf_bp->b_addr, agfl_bp,
xrep_agf_check_agfl_block, sc); xrep_agf_check_agfl_block, sc);
if (error) if (error)
return error; return error;
@ -550,7 +550,7 @@ xrep_agfl_update_agf(
struct xfs_buf *agf_bp, struct xfs_buf *agf_bp,
xfs_agblock_t flcount) xfs_agblock_t flcount)
{ {
struct xfs_agf *agf = XFS_BUF_TO_AGF(agf_bp); struct xfs_agf *agf = agf_bp->b_addr;
ASSERT(flcount <= xfs_agfl_size(sc->mp)); ASSERT(flcount <= xfs_agfl_size(sc->mp));

View File

@ -208,8 +208,10 @@ xrep_calc_ag_resblks(
/* Now grab the block counters from the AGF. */ /* Now grab the block counters from the AGF. */
error = xfs_alloc_read_agf(mp, NULL, sm->sm_agno, 0, &bp); error = xfs_alloc_read_agf(mp, NULL, sm->sm_agno, 0, &bp);
if (!error) { if (!error) {
aglen = be32_to_cpu(XFS_BUF_TO_AGF(bp)->agf_length); struct xfs_agf *agf = bp->b_addr;
freelen = be32_to_cpu(XFS_BUF_TO_AGF(bp)->agf_freeblks);
aglen = be32_to_cpu(agf->agf_length);
freelen = be32_to_cpu(agf->agf_freeblks);
usedlen = aglen - freelen; usedlen = aglen - freelen;
xfs_buf_relse(bp); xfs_buf_relse(bp);
} }
@ -879,7 +881,7 @@ xrep_find_ag_btree_roots(
ri.sc = sc; ri.sc = sc;
ri.btree_info = btree_info; ri.btree_info = btree_info;
ri.agf = XFS_BUF_TO_AGF(agf_bp); ri.agf = agf_bp->b_addr;
ri.agfl_bp = agfl_bp; ri.agfl_bp = agfl_bp;
for (fab = btree_info; fab->buf_ops; fab++) { for (fab = btree_info; fab->buf_ops; fab++) {
ASSERT(agfl_bp || fab->rmap_owner != XFS_RMAP_OWN_AG); ASSERT(agfl_bp || fab->rmap_owner != XFS_RMAP_OWN_AG);

View File

@ -31,6 +31,7 @@ xfs_trim_extents(
struct block_device *bdev = mp->m_ddev_targp->bt_bdev; struct block_device *bdev = mp->m_ddev_targp->bt_bdev;
struct xfs_btree_cur *cur; struct xfs_btree_cur *cur;
struct xfs_buf *agbp; struct xfs_buf *agbp;
struct xfs_agf *agf;
struct xfs_perag *pag; struct xfs_perag *pag;
int error; int error;
int i; int i;
@ -47,14 +48,14 @@ xfs_trim_extents(
error = xfs_alloc_read_agf(mp, NULL, agno, 0, &agbp); error = xfs_alloc_read_agf(mp, NULL, agno, 0, &agbp);
if (error) if (error)
goto out_put_perag; goto out_put_perag;
agf = agbp->b_addr;
cur = xfs_allocbt_init_cursor(mp, NULL, agbp, agno, XFS_BTNUM_CNT); cur = xfs_allocbt_init_cursor(mp, NULL, agbp, agno, XFS_BTNUM_CNT);
/* /*
* Look up the longest btree in the AGF and start with it. * Look up the longest btree in the AGF and start with it.
*/ */
error = xfs_alloc_lookup_ge(cur, 0, error = xfs_alloc_lookup_ge(cur, 0, be32_to_cpu(agf->agf_longest), &i);
be32_to_cpu(XFS_BUF_TO_AGF(agbp)->agf_longest), &i);
if (error) if (error)
goto out_del_cursor; goto out_del_cursor;
@ -75,7 +76,7 @@ xfs_trim_extents(
error = -EFSCORRUPTED; error = -EFSCORRUPTED;
goto out_del_cursor; goto out_del_cursor;
} }
ASSERT(flen <= be32_to_cpu(XFS_BUF_TO_AGF(agbp)->agf_longest)); ASSERT(flen <= be32_to_cpu(agf->agf_longest));
/* /*
* use daddr format for all range/len calculations as that is * use daddr format for all range/len calculations as that is

View File

@ -5809,7 +5809,6 @@ xlog_recover_check_summary(
struct xlog *log) struct xlog *log)
{ {
xfs_mount_t *mp; xfs_mount_t *mp;
xfs_agf_t *agfp;
xfs_buf_t *agfbp; xfs_buf_t *agfbp;
xfs_buf_t *agibp; xfs_buf_t *agibp;
xfs_agnumber_t agno; xfs_agnumber_t agno;
@ -5829,7 +5828,8 @@ xlog_recover_check_summary(
xfs_alert(mp, "%s agf read failed agno %d error %d", xfs_alert(mp, "%s agf read failed agno %d error %d",
__func__, agno, error); __func__, agno, error);
} else { } else {
agfp = XFS_BUF_TO_AGF(agfbp); struct xfs_agf *agfp = agfbp->b_addr;
freeblks += be32_to_cpu(agfp->agf_freeblks) + freeblks += be32_to_cpu(agfp->agf_freeblks) +
be32_to_cpu(agfp->agf_flcount); be32_to_cpu(agfp->agf_flcount);
xfs_buf_relse(agfbp); xfs_buf_relse(agfbp);