Re: [PATCH 4/6] xfs: remove XFS_BUF_TO_AGI

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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@xxxxxx>
> Reviewed-by: Eric Sandeen <sandeen@xxxxxxxxxx>
> ---

Reviewed-by: Brian Foster <bfoster@xxxxxxxxxx>

>  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
> 




[Index of Archives]     [XFS Filesystem Development (older mail)]     [Linux Filesystem Development]     [Linux Audio Users]     [Yosemite Trails]     [Linux Kernel]     [Linux RAID]     [Linux SCSI]


  Powered by Linux