From: Brian Foster <bfoster@redhat.com>
To: Christoph Hellwig <hch@lst.de>
Cc: linux-xfs@vger.kernel.org, Eric Sandeen <sandeen@redhat.com>
Subject: Re: [PATCH 4/6] xfs: remove XFS_BUF_TO_AGI
Date: Tue, 10 Mar 2020 07:34:17 -0400 [thread overview]
Message-ID: <20200310113417.GD50276@bfoster> (raw)
In-Reply-To: <20200306145220.242562-5-hch@lst.de>
On Fri, Mar 06, 2020 at 07:52:18AM -0700, Christoph Hellwig wrote:
> 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>
> fs/xfs/libxfs/xfs_ag.c | 6 +++---
> fs/xfs/libxfs/xfs_format.h | 1 -
> fs/xfs/libxfs/xfs_ialloc.c | 27 +++++++++++++--------------
> fs/xfs/libxfs/xfs_ialloc_btree.c | 10 +++++-----
> fs/xfs/scrub/agheader.c | 4 ++--
> fs/xfs/scrub/agheader_repair.c | 8 ++++----
> fs/xfs/xfs_inode.c | 6 +++---
> fs/xfs/xfs_log_recover.c | 6 +++---
> 8 files changed, 33 insertions(+), 35 deletions(-)
>
> diff --git a/fs/xfs/libxfs/xfs_ag.c b/fs/xfs/libxfs/xfs_ag.c
> index 32ceba66456f..465d0d568411 100644
> --- a/fs/xfs/libxfs/xfs_ag.c
> +++ b/fs/xfs/libxfs/xfs_ag.c
> @@ -312,7 +312,7 @@ xfs_agiblock_init(
> struct xfs_buf *bp,
> struct aghdr_init_data *id)
> {
> - struct xfs_agi *agi = XFS_BUF_TO_AGI(bp);
> + struct xfs_agi *agi = bp->b_addr;
> int bucket;
>
> agi->agi_magicnum = cpu_to_be32(XFS_AGI_MAGIC);
> @@ -502,7 +502,7 @@ xfs_ag_extend_space(
> if (error)
> return error;
>
> - agi = XFS_BUF_TO_AGI(bp);
> + agi = bp->b_addr;
> be32_add_cpu(&agi->agi_length, len);
> ASSERT(id->agno == mp->m_sb.sb_agcount - 1 ||
> be32_to_cpu(agi->agi_length) == mp->m_sb.sb_agblocks);
> @@ -569,7 +569,7 @@ xfs_ag_get_geometry(
> memset(ageo, 0, sizeof(*ageo));
> ageo->ag_number = agno;
>
> - agi = XFS_BUF_TO_AGI(agi_bp);
> + agi = agi_bp->b_addr;
> ageo->ag_icount = be32_to_cpu(agi->agi_count);
> ageo->ag_ifree = be32_to_cpu(agi->agi_freecount);
>
> diff --git a/fs/xfs/libxfs/xfs_format.h b/fs/xfs/libxfs/xfs_format.h
> index fe685ad91e0f..5710fed6c75a 100644
> --- a/fs/xfs/libxfs/xfs_format.h
> +++ b/fs/xfs/libxfs/xfs_format.h
> @@ -775,7 +775,6 @@ typedef struct xfs_agi {
> /* disk block (xfs_daddr_t) in the AG */
> #define XFS_AGI_DADDR(mp) ((xfs_daddr_t)(2 << (mp)->m_sectbb_log))
> #define XFS_AGI_BLOCK(mp) XFS_HDR_BLOCK(mp, XFS_AGI_DADDR(mp))
> -#define XFS_BUF_TO_AGI(bp) ((xfs_agi_t *)((bp)->b_addr))
>
> /*
> * The third a.g. block contains the a.g. freelist, an array
> diff --git a/fs/xfs/libxfs/xfs_ialloc.c b/fs/xfs/libxfs/xfs_ialloc.c
> index bf161e930f1d..b4a404278935 100644
> --- a/fs/xfs/libxfs/xfs_ialloc.c
> +++ b/fs/xfs/libxfs/xfs_ialloc.c
> @@ -177,7 +177,7 @@ xfs_inobt_insert(
> xfs_btnum_t btnum)
> {
> struct xfs_btree_cur *cur;
> - struct xfs_agi *agi = XFS_BUF_TO_AGI(agbp);
> + struct xfs_agi *agi = agbp->b_addr;
> xfs_agnumber_t agno = be32_to_cpu(agi->agi_seqno);
> xfs_agino_t thisino;
> int i;
> @@ -525,7 +525,7 @@ xfs_inobt_insert_sprec(
> bool merge) /* merge or replace */
> {
> struct xfs_btree_cur *cur;
> - struct xfs_agi *agi = XFS_BUF_TO_AGI(agbp);
> + struct xfs_agi *agi = agbp->b_addr;
> xfs_agnumber_t agno = be32_to_cpu(agi->agi_seqno);
> int error;
> int i;
> @@ -658,7 +658,7 @@ xfs_ialloc_ag_alloc(
> * chunk of inodes. If the filesystem is striped, this will fill
> * an entire stripe unit with inodes.
> */
> - agi = XFS_BUF_TO_AGI(agbp);
> + agi = agbp->b_addr;
> newino = be32_to_cpu(agi->agi_newino);
> agno = be32_to_cpu(agi->agi_seqno);
> args.agbno = XFS_AGINO_TO_AGBNO(args.mp, newino) +
> @@ -1130,7 +1130,7 @@ xfs_dialloc_ag_inobt(
> xfs_ino_t *inop)
> {
> struct xfs_mount *mp = tp->t_mountp;
> - struct xfs_agi *agi = XFS_BUF_TO_AGI(agbp);
> + struct xfs_agi *agi = agbp->b_addr;
> xfs_agnumber_t agno = be32_to_cpu(agi->agi_seqno);
> xfs_agnumber_t pagno = XFS_INO_TO_AGNO(mp, parent);
> xfs_agino_t pagino = XFS_INO_TO_AGINO(mp, parent);
> @@ -1583,7 +1583,7 @@ xfs_dialloc_ag(
> xfs_ino_t *inop)
> {
> struct xfs_mount *mp = tp->t_mountp;
> - struct xfs_agi *agi = XFS_BUF_TO_AGI(agbp);
> + struct xfs_agi *agi = agbp->b_addr;
> xfs_agnumber_t agno = be32_to_cpu(agi->agi_seqno);
> xfs_agnumber_t pagno = XFS_INO_TO_AGNO(mp, parent);
> xfs_agino_t pagino = XFS_INO_TO_AGINO(mp, parent);
> @@ -1943,7 +1943,7 @@ xfs_difree_inobt(
> struct xfs_icluster *xic,
> struct xfs_inobt_rec_incore *orec)
> {
> - struct xfs_agi *agi = XFS_BUF_TO_AGI(agbp);
> + struct xfs_agi *agi = agbp->b_addr;
> xfs_agnumber_t agno = be32_to_cpu(agi->agi_seqno);
> struct xfs_perag *pag;
> struct xfs_btree_cur *cur;
> @@ -2079,7 +2079,7 @@ xfs_difree_finobt(
> xfs_agino_t agino,
> struct xfs_inobt_rec_incore *ibtrec) /* inobt record */
> {
> - struct xfs_agi *agi = XFS_BUF_TO_AGI(agbp);
> + struct xfs_agi *agi = agbp->b_addr;
> xfs_agnumber_t agno = be32_to_cpu(agi->agi_seqno);
> struct xfs_btree_cur *cur;
> struct xfs_inobt_rec_incore rec;
> @@ -2489,9 +2489,8 @@ xfs_ialloc_log_agi(
> sizeof(xfs_agi_t)
> };
> #ifdef DEBUG
> - xfs_agi_t *agi; /* allocation group header */
> + struct xfs_agi *agi = bp->b_addr;
>
> - agi = XFS_BUF_TO_AGI(bp);
> ASSERT(agi->agi_magicnum == cpu_to_be32(XFS_AGI_MAGIC));
> #endif
>
> @@ -2523,14 +2522,13 @@ xfs_agi_verify(
> struct xfs_buf *bp)
> {
> struct xfs_mount *mp = bp->b_mount;
> - struct xfs_agi *agi = XFS_BUF_TO_AGI(bp);
> + struct xfs_agi *agi = bp->b_addr;
> int i;
>
> if (xfs_sb_version_hascrc(&mp->m_sb)) {
> if (!uuid_equal(&agi->agi_uuid, &mp->m_sb.sb_meta_uuid))
> return __this_address;
> - if (!xfs_log_check_lsn(mp,
> - be64_to_cpu(XFS_BUF_TO_AGI(bp)->agi_lsn)))
> + if (!xfs_log_check_lsn(mp, be64_to_cpu(agi->agi_lsn)))
> return __this_address;
> }
>
> @@ -2593,6 +2591,7 @@ xfs_agi_write_verify(
> {
> struct xfs_mount *mp = bp->b_mount;
> struct xfs_buf_log_item *bip = bp->b_log_item;
> + struct xfs_agi *agi = bp->b_addr;
> xfs_failaddr_t fa;
>
> fa = xfs_agi_verify(bp);
> @@ -2605,7 +2604,7 @@ xfs_agi_write_verify(
> return;
>
> if (bip)
> - XFS_BUF_TO_AGI(bp)->agi_lsn = cpu_to_be64(bip->bli_item.li_lsn);
> + agi->agi_lsn = cpu_to_be64(bip->bli_item.li_lsn);
> xfs_buf_update_cksum(bp, XFS_AGI_CRC_OFF);
> }
>
> @@ -2661,7 +2660,7 @@ xfs_ialloc_read_agi(
> if (error)
> return error;
>
> - agi = XFS_BUF_TO_AGI(*bpp);
> + agi = (*bpp)->b_addr;
> pag = xfs_perag_get(mp, agno);
> if (!pag->pagi_init) {
> pag->pagi_freecount = be32_to_cpu(agi->agi_freecount);
> diff --git a/fs/xfs/libxfs/xfs_ialloc_btree.c b/fs/xfs/libxfs/xfs_ialloc_btree.c
> index b82992f795aa..6903820f1c4b 100644
> --- a/fs/xfs/libxfs/xfs_ialloc_btree.c
> +++ b/fs/xfs/libxfs/xfs_ialloc_btree.c
> @@ -45,7 +45,7 @@ xfs_inobt_set_root(
> int inc) /* level change */
> {
> struct xfs_buf *agbp = cur->bc_private.a.agbp;
> - struct xfs_agi *agi = XFS_BUF_TO_AGI(agbp);
> + struct xfs_agi *agi = agbp->b_addr;
>
> agi->agi_root = nptr->s;
> be32_add_cpu(&agi->agi_level, inc);
> @@ -59,7 +59,7 @@ xfs_finobt_set_root(
> int inc) /* level change */
> {
> struct xfs_buf *agbp = cur->bc_private.a.agbp;
> - struct xfs_agi *agi = XFS_BUF_TO_AGI(agbp);
> + struct xfs_agi *agi = agbp->b_addr;
>
> agi->agi_free_root = nptr->s;
> be32_add_cpu(&agi->agi_free_level, inc);
> @@ -212,7 +212,7 @@ xfs_inobt_init_ptr_from_cur(
> struct xfs_btree_cur *cur,
> union xfs_btree_ptr *ptr)
> {
> - struct xfs_agi *agi = XFS_BUF_TO_AGI(cur->bc_private.a.agbp);
> + struct xfs_agi *agi = cur->bc_private.a.agbp->b_addr;
>
> ASSERT(cur->bc_private.a.agno == be32_to_cpu(agi->agi_seqno));
>
> @@ -224,7 +224,7 @@ xfs_finobt_init_ptr_from_cur(
> struct xfs_btree_cur *cur,
> union xfs_btree_ptr *ptr)
> {
> - struct xfs_agi *agi = XFS_BUF_TO_AGI(cur->bc_private.a.agbp);
> + struct xfs_agi *agi = cur->bc_private.a.agbp->b_addr;
>
> ASSERT(cur->bc_private.a.agno == be32_to_cpu(agi->agi_seqno));
> ptr->s = agi->agi_free_root;
> @@ -410,7 +410,7 @@ xfs_inobt_init_cursor(
> xfs_agnumber_t agno, /* allocation group number */
> xfs_btnum_t btnum) /* ialloc or free ino btree */
> {
> - struct xfs_agi *agi = XFS_BUF_TO_AGI(agbp);
> + struct xfs_agi *agi = agbp->b_addr;
> struct xfs_btree_cur *cur;
>
> cur = kmem_zone_zalloc(xfs_btree_cur_zone, KM_NOFS);
> diff --git a/fs/xfs/scrub/agheader.c b/fs/xfs/scrub/agheader.c
> index ba0f747c82e8..a117e10feb82 100644
> --- a/fs/xfs/scrub/agheader.c
> +++ b/fs/xfs/scrub/agheader.c
> @@ -765,7 +765,7 @@ static inline void
> xchk_agi_xref_icounts(
> struct xfs_scrub *sc)
> {
> - struct xfs_agi *agi = XFS_BUF_TO_AGI(sc->sa.agi_bp);
> + struct xfs_agi *agi = sc->sa.agi_bp->b_addr;
> xfs_agino_t icount;
> xfs_agino_t freecount;
> int error;
> @@ -834,7 +834,7 @@ xchk_agi(
> goto out;
> xchk_buffer_recheck(sc, sc->sa.agi_bp);
>
> - agi = XFS_BUF_TO_AGI(sc->sa.agi_bp);
> + agi = sc->sa.agi_bp->b_addr;
>
> /* Check the AG length */
> eoag = be32_to_cpu(agi->agi_length);
> diff --git a/fs/xfs/scrub/agheader_repair.c b/fs/xfs/scrub/agheader_repair.c
> index 6da2e87d19a8..6f0f5ff2cb3f 100644
> --- a/fs/xfs/scrub/agheader_repair.c
> +++ b/fs/xfs/scrub/agheader_repair.c
> @@ -760,7 +760,7 @@ xrep_agi_init_header(
> struct xfs_buf *agi_bp,
> struct xfs_agi *old_agi)
> {
> - struct xfs_agi *agi = XFS_BUF_TO_AGI(agi_bp);
> + struct xfs_agi *agi = agi_bp->b_addr;
> struct xfs_mount *mp = sc->mp;
>
> memcpy(old_agi, agi, sizeof(*old_agi));
> @@ -806,7 +806,7 @@ xrep_agi_calc_from_btrees(
> struct xfs_buf *agi_bp)
> {
> struct xfs_btree_cur *cur;
> - struct xfs_agi *agi = XFS_BUF_TO_AGI(agi_bp);
> + struct xfs_agi *agi = agi_bp->b_addr;
> struct xfs_mount *mp = sc->mp;
> xfs_agino_t count;
> xfs_agino_t freecount;
> @@ -834,7 +834,7 @@ xrep_agi_commit_new(
> struct xfs_buf *agi_bp)
> {
> struct xfs_perag *pag;
> - struct xfs_agi *agi = XFS_BUF_TO_AGI(agi_bp);
> + struct xfs_agi *agi = agi_bp->b_addr;
>
> /* Trigger inode count recalculation */
> xfs_force_summary_recalc(sc->mp);
> @@ -891,7 +891,7 @@ xrep_agi(
> if (error)
> return error;
> agi_bp->b_ops = &xfs_agi_buf_ops;
> - agi = XFS_BUF_TO_AGI(agi_bp);
> + agi = agi_bp->b_addr;
>
> /* Find the AGI btree roots. */
> error = xrep_agi_find_btrees(sc, fab);
> diff --git a/fs/xfs/xfs_inode.c b/fs/xfs/xfs_inode.c
> index 3324e1696354..addc3ee0cb73 100644
> --- a/fs/xfs/xfs_inode.c
> +++ b/fs/xfs/xfs_inode.c
> @@ -2117,7 +2117,7 @@ xfs_iunlink_update_bucket(
> unsigned int bucket_index,
> xfs_agino_t new_agino)
> {
> - struct xfs_agi *agi = XFS_BUF_TO_AGI(agibp);
> + struct xfs_agi *agi = agibp->b_addr;
> xfs_agino_t old_value;
> int offset;
>
> @@ -2257,7 +2257,7 @@ xfs_iunlink(
> error = xfs_read_agi(mp, tp, agno, &agibp);
> if (error)
> return error;
> - agi = XFS_BUF_TO_AGI(agibp);
> + agi = agibp->b_addr;
>
> /*
> * Get the index into the agi hash table for the list this inode will
> @@ -2441,7 +2441,7 @@ xfs_iunlink_remove(
> error = xfs_read_agi(mp, tp, agno, &agibp);
> if (error)
> return error;
> - agi = XFS_BUF_TO_AGI(agibp);
> + agi = agibp->b_addr;
>
> /*
> * Get the index into the agi hash table for the list this inode will
> diff --git a/fs/xfs/xfs_log_recover.c b/fs/xfs/xfs_log_recover.c
> index 25cfc85dbaa7..00d5df5fb26b 100644
> --- a/fs/xfs/xfs_log_recover.c
> +++ b/fs/xfs/xfs_log_recover.c
> @@ -4947,7 +4947,7 @@ xlog_recover_clear_agi_bucket(
> if (error)
> goto out_abort;
>
> - agi = XFS_BUF_TO_AGI(agibp);
> + agi = agibp->b_addr;
> agi->agi_unlinked[bucket] = cpu_to_be32(NULLAGINO);
> offset = offsetof(xfs_agi_t, agi_unlinked) +
> (sizeof(xfs_agino_t) * bucket);
> @@ -5083,7 +5083,7 @@ xlog_recover_process_iunlinks(
> * buffer reference though, so that it stays pinned in memory
> * while we need the buffer.
> */
> - agi = XFS_BUF_TO_AGI(agibp);
> + agi = agibp->b_addr;
> xfs_buf_unlock(agibp);
>
> for (bucket = 0; bucket < XFS_AGI_UNLINKED_BUCKETS; bucket++) {
> @@ -5840,7 +5840,7 @@ xlog_recover_check_summary(
> xfs_alert(mp, "%s agi read failed agno %d error %d",
> __func__, agno, error);
> } else {
> - struct xfs_agi *agi = XFS_BUF_TO_AGI(agibp);
> + struct xfs_agi *agi = agibp->b_addr;
>
> itotal += be32_to_cpu(agi->agi_count);
> ifree += be32_to_cpu(agi->agi_freecount);
> --
> 2.24.1
>
next prev parent reply other threads:[~2020-03-10 11:34 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-03-06 14:52 agfl and related cleanups v2 Christoph Hellwig
2020-03-06 14:52 ` [PATCH 1/6] xfs: remove the agfl_bno member from struct xfs_agfl Christoph Hellwig
2020-03-10 11:23 ` Brian Foster
2020-03-06 14:52 ` [PATCH 2/6] xfs: remove the xfs_agfl_t typedef Christoph Hellwig
2020-03-10 11:23 ` Brian Foster
2020-03-06 14:52 ` [PATCH 3/6] xfs: remove XFS_BUF_TO_AGFL Christoph Hellwig
2020-03-10 11:23 ` Brian Foster
2020-03-06 14:52 ` [PATCH 4/6] xfs: remove XFS_BUF_TO_AGI Christoph Hellwig
2020-03-10 11:34 ` Brian Foster [this message]
2020-03-06 14:52 ` [PATCH 5/6] xfs: remove XFS_BUF_TO_AGF Christoph Hellwig
2020-03-10 11:34 ` Brian Foster
2020-03-06 14:52 ` [PATCH 6/6] xfs: remove XFS_BUF_TO_SBP Christoph Hellwig
2020-03-10 11:34 ` Brian Foster
2020-03-10 16:00 ` Eric Sandeen
-- strict thread matches above, loose matches on Subject: below --
2020-01-30 13:33 agfl and related cleanups Christoph Hellwig
2020-01-30 13:33 ` [PATCH 4/6] xfs: remove XFS_BUF_TO_AGI Christoph Hellwig
2020-02-03 18:30 ` Eric Sandeen
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20200310113417.GD50276@bfoster \
--to=bfoster@redhat.com \
--cc=hch@lst.de \
--cc=linux-xfs@vger.kernel.org \
--cc=sandeen@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox