]> git.ipfire.org Git - thirdparty/xfsprogs-dev.git/commitdiff
xfs: remove XFS_BUF_TO_AGF
authorChristoph Hellwig <hch@lst.de>
Fri, 1 May 2020 21:37:08 +0000 (17:37 -0400)
committerEric Sandeen <sandeen@redhat.com>
Fri, 1 May 2020 21:37:08 +0000 (17:37 -0400)
Source kernel commit: 9798f615ad2be48466a01c44ad2257ba64ab03bd

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>
Signed-off-by: Eric Sandeen <sandeen@sandeen.net>
db/info.c
include/xfs.h
libxfs/xfs_ag.c
libxfs/xfs_alloc.c
libxfs/xfs_alloc_btree.c
libxfs/xfs_format.h
libxfs/xfs_refcount_btree.c
libxfs/xfs_rmap_btree.c
repair/phase5.c
repair/scan.c

index 5c941dc462081be9210742b7d4dc4f8980aedbfa..2731446da699a06a03393be21bb9a4f3eedb3be8 100644 (file)
--- a/db/info.c
+++ b/db/info.c
@@ -85,7 +85,7 @@ print_agresv_info(
        error = -libxfs_read_agf(mp, NULL, agno, 0, &bp);
        if (error)
                xfrog_perror(error, "AGF");
-       agf = XFS_BUF_TO_AGF(bp);
+       agf = bp->b_addr;
        length = be32_to_cpu(agf->agf_length);
        free = be32_to_cpu(agf->agf_freeblks) +
               be32_to_cpu(agf->agf_flcount);
index f2f675df874ac4021a16e1871827d4ca1c11991b..f673d92efa5f933ecb38599e38d2dc7768db7c40 100644 (file)
@@ -30,6 +30,10 @@ extern int xfs_assert_largefile[sizeof(off_t)-8];
 #define __packed __attribute__((packed))
 #endif
 
+#ifndef __maybe_unused
+#define __maybe_unused __attribute__((__unused__))
+#endif
+
 #ifndef BUILD_BUG_ON
 #define BUILD_BUG_ON(condition) ((void)sizeof(char[1 - 2*!!(condition)]))
 #endif
index 375eeeae7250789cfefff89665b65f2cf115075e..c6160df75e7e9e0da64d4ac8e64f70226a2453cd 100644 (file)
@@ -243,7 +243,7 @@ xfs_agfblock_init(
        struct xfs_buf          *bp,
        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;
 
        agf->agf_magicnum = cpu_to_be32(XFS_AGF_MAGIC);
@@ -515,7 +515,7 @@ xfs_ag_extend_space(
        if (error)
                return error;
 
-       agf = XFS_BUF_TO_AGF(bp);
+       agf = bp->b_addr;
        be32_add_cpu(&agf->agf_length, len);
        ASSERT(agf->agf_length == agi->agi_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_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);
        freeblks = pag->pagf_freeblks +
                   pag->pagf_flcount +
index 268776f2dd316b00948d52fca679b03a4b7a26f9..b3abab493dbc1d1e0cd9764de9bd9e24d115963a 100644 (file)
@@ -710,7 +710,7 @@ xfs_alloc_update_counters(
        struct xfs_buf          *agbp,
        long                    len)
 {
-       struct xfs_agf          *agf = XFS_BUF_TO_AGF(agbp);
+       struct xfs_agf          *agf = agbp->b_addr;
 
        pag->pagf_freeblks += len;
        be32_add_cpu(&agf->agf_freeblks, len);
@@ -919,13 +919,13 @@ xfs_alloc_cur_finish(
        struct xfs_alloc_arg    *args,
        struct xfs_alloc_cur    *acur)
 {
+       struct xfs_agf __maybe_unused *agf = args->agbp->b_addr;
        int                     error;
 
        ASSERT(acur->cnt && acur->bnolt);
        ASSERT(acur->bno >= acur->rec_bno);
        ASSERT(acur->bno + acur->len <= acur->rec_bno + acur->rec_len);
-       ASSERT(acur->rec_bno + acur->rec_len <=
-              be32_to_cpu(XFS_BUF_TO_AGF(args->agbp)->agf_length));
+       ASSERT(acur->rec_bno + acur->rec_len <= be32_to_cpu(agf->agf_length));
 
        error = xfs_alloc_fixup_trees(acur->cnt, acur->bnolt, acur->rec_bno,
                                      acur->rec_len, acur->bno, acur->len, 0);
@@ -1023,6 +1023,7 @@ xfs_alloc_ag_vextent_small(
        xfs_extlen_t            *flenp, /* result length */
        int                     *stat)  /* status: 0-freelist, 1-normal/none */
 {
+       struct xfs_agf          *agf = args->agbp->b_addr;
        int                     error = 0;
        xfs_agblock_t           fbno = NULLAGBLOCK;
        xfs_extlen_t            flen = 0;
@@ -1051,8 +1052,7 @@ xfs_alloc_ag_vextent_small(
 
        if (args->minlen != 1 || args->alignment != 1 ||
            args->resv == XFS_AG_RESV_AGFL ||
-           (be32_to_cpu(XFS_BUF_TO_AGF(args->agbp)->agf_flcount) <=
-            args->minleft))
+           be32_to_cpu(agf->agf_flcount) <= args->minleft)
                goto out;
 
        error = xfs_alloc_get_freelist(args->tp, args->agbp, &fbno, 0);
@@ -1076,9 +1076,7 @@ xfs_alloc_ag_vextent_small(
        }
        *fbnop = args->agbno = fbno;
        *flenp = args->len = 1;
-       if (XFS_IS_CORRUPT(args->mp,
-                          fbno >= be32_to_cpu(
-                                  XFS_BUF_TO_AGF(args->agbp)->agf_length))) {
+       if (XFS_IS_CORRUPT(args->mp, fbno >= be32_to_cpu(agf->agf_length))) {
                error = -EFSCORRUPTED;
                goto error;
        }
@@ -1200,6 +1198,7 @@ STATIC int                        /* error */
 xfs_alloc_ag_vextent_exact(
        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 *cnt_cur;/* by count btree cursor */
        int             error;
@@ -1278,8 +1277,7 @@ xfs_alloc_ag_vextent_exact(
         */
        cnt_cur = xfs_allocbt_init_cursor(args->mp, args->tp, args->agbp,
                args->agno, XFS_BTNUM_CNT);
-       ASSERT(args->agbno + args->len <=
-               be32_to_cpu(XFS_BUF_TO_AGF(args->agbp)->agf_length));
+       ASSERT(args->agbno + args->len <= be32_to_cpu(agf->agf_length));
        error = xfs_alloc_fixup_trees(cnt_cur, bno_cur, fbno, flen, args->agbno,
                                      args->len, XFSA_FIXUP_BNO_OK);
        if (error) {
@@ -1658,6 +1656,7 @@ STATIC int                                /* error */
 xfs_alloc_ag_vextent_size(
        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 *cnt_cur;       /* cursor for cnt btree */
        int             error;          /* error result */
@@ -1848,8 +1847,7 @@ restart:
        args->agbno = rbno;
        if (XFS_IS_CORRUPT(args->mp,
                           args->agbno + args->len >
-                          be32_to_cpu(
-                                  XFS_BUF_TO_AGF(args->agbp)->agf_length))) {
+                          be32_to_cpu(agf->agf_length))) {
                error = -EFSCORRUPTED;
                goto error0;
        }
@@ -2421,7 +2419,7 @@ xfs_agfl_reset(
        struct xfs_perag        *pag)
 {
        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);
        trace_xfs_agfl_reset(mp, agf, 0, _RET_IP_);
@@ -2652,7 +2650,7 @@ xfs_alloc_get_freelist(
        xfs_agblock_t   *bnop,  /* block address retrieved from freelist */
        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_agblock_t   bno;    /* block number returned */
        __be32          *agfl_bno;
@@ -2664,7 +2662,6 @@ xfs_alloc_get_freelist(
        /*
         * Freelist is empty, give up.
         */
-       agf = XFS_BUF_TO_AGF(agbp);
        if (!agf->agf_flcount) {
                *bnop = NULLAGBLOCK;
                return 0;
@@ -2742,7 +2739,7 @@ xfs_alloc_log_agf(
                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);
 
@@ -2780,18 +2777,15 @@ xfs_alloc_put_freelist(
        xfs_agblock_t           bno,    /* block being freed */
        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 */
        int                     error;
        int                     logflags;
-       xfs_mount_t             *mp;    /* mount structure */
        xfs_perag_t             *pag;   /* per allocation group data */
        __be32                  *agfl_bno;
        int                     startoff;
 
-       agf = XFS_BUF_TO_AGF(agbp);
-       mp = tp->t_mountp;
-
        if (!agflbp && (error = xfs_alloc_read_agfl(mp, tp,
                        be32_to_cpu(agf->agf_seqno), &agflbp)))
                return error;
@@ -2835,13 +2829,12 @@ xfs_agf_verify(
        struct xfs_buf          *bp)
 {
        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 (!uuid_equal(&agf->agf_uuid, &mp->m_sb.sb_meta_uuid))
                        return __this_address;
-               if (!xfs_log_check_lsn(mp,
-                               be64_to_cpu(XFS_BUF_TO_AGF(bp)->agf_lsn)))
+               if (!xfs_log_check_lsn(mp, be64_to_cpu(agf->agf_lsn)))
                        return __this_address;
        }
 
@@ -2927,6 +2920,7 @@ xfs_agf_write_verify(
 {
        struct xfs_mount        *mp = bp->b_mount;
        struct xfs_buf_log_item *bip = bp->b_log_item;
+       struct xfs_agf          *agf = bp->b_addr;
        xfs_failaddr_t          fa;
 
        fa = xfs_agf_verify(bp);
@@ -2939,7 +2933,7 @@ xfs_agf_write_verify(
                return;
 
        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);
 }
@@ -3007,7 +3001,7 @@ xfs_alloc_read_agf(
                return error;
        ASSERT(!(*bpp)->b_error);
 
-       agf = XFS_BUF_TO_AGF(*bpp);
+       agf = (*bpp)->b_addr;
        pag = xfs_perag_get(mp, agno);
        if (!pag->pagf_init) {
                pag->pagf_freeblks = be32_to_cpu(agf->agf_freeblks);
@@ -3288,6 +3282,7 @@ __xfs_free_extent(
        struct xfs_buf                  *agbp;
        xfs_agnumber_t                  agno = XFS_FSB_TO_AGNO(mp, bno);
        xfs_agblock_t                   agbno = XFS_FSB_TO_AGBNO(mp, bno);
+       struct xfs_agf                  *agf;
        int                             error;
        unsigned int                    busy_flags = 0;
 
@@ -3301,6 +3296,7 @@ __xfs_free_extent(
        error = xfs_free_extent_fix_freelist(tp, agno, &agbp);
        if (error)
                return error;
+       agf = agbp->b_addr;
 
        if (XFS_IS_CORRUPT(mp, agbno >= mp->m_sb.sb_agblocks)) {
                error = -EFSCORRUPTED;
@@ -3308,9 +3304,7 @@ __xfs_free_extent(
        }
 
        /* validate the extent size is legal now we have the agf locked */
-       if (XFS_IS_CORRUPT(mp,
-                          agbno + len >
-                          be32_to_cpu(XFS_BUF_TO_AGF(agbp)->agf_length))) {
+       if (XFS_IS_CORRUPT(mp, agbno + len > be32_to_cpu(agf->agf_length))) {
                error = -EFSCORRUPTED;
                goto err;
        }
index 57327deb92587d8852c9fecb630f629000abbd97..337db214f9fc965da1df03204df991293868019f 100644 (file)
@@ -34,7 +34,7 @@ xfs_allocbt_set_root(
        int                     inc)
 {
        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);
        int                     btnum = cur->bc_btnum;
        struct xfs_perag        *pag = xfs_perag_get(cur->bc_mp, seqno);
@@ -85,7 +85,7 @@ xfs_allocbt_free_block(
        struct xfs_buf          *bp)
 {
        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;
        int                     error;
 
@@ -111,7 +111,7 @@ xfs_allocbt_update_lastrec(
        int                     ptr,
        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);
        struct xfs_perag        *pag;
        __be32                  len;
@@ -224,7 +224,7 @@ xfs_allocbt_init_ptr_from_cur(
        struct xfs_btree_cur    *cur,
        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));
 
@@ -480,7 +480,7 @@ xfs_allocbt_init_cursor(
        xfs_agnumber_t          agno,           /* allocation group number */
        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;
 
        ASSERT(btnum == XFS_BTNUM_BNO || btnum == XFS_BTNUM_CNT);
index dbcd8b27168beecbb8c362918c313e4da31907e7..1fec1302747a11c5672a99246b805edecee4a247 100644 (file)
@@ -707,7 +707,6 @@ typedef struct xfs_agf {
 /* disk block (xfs_daddr_t) in the AG */
 #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_BUF_TO_AGF(bp)      ((xfs_agf_t *)((bp)->b_addr))
 
 /*
  * Size of the unlinked inode hash table in the agi.
index c1561325bf254cf705ff5c7bfe42546af6ff820c..75c60aac5a1ef4138d458437af7442dfabcaf7e1 100644 (file)
@@ -34,7 +34,7 @@ xfs_refcountbt_set_root(
        int                     inc)
 {
        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);
        struct xfs_perag        *pag = xfs_perag_get(cur->bc_mp, seqno);
 
@@ -57,7 +57,7 @@ xfs_refcountbt_alloc_block(
        int                     *stat)
 {
        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 */
        int                     error;          /* error return value */
 
@@ -101,7 +101,7 @@ xfs_refcountbt_free_block(
 {
        struct xfs_mount        *mp = cur->bc_mp;
        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));
        int                     error;
 
@@ -168,7 +168,7 @@ xfs_refcountbt_init_ptr_from_cur(
        struct xfs_btree_cur    *cur,
        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));
 
@@ -319,7 +319,7 @@ xfs_refcountbt_init_cursor(
        struct xfs_buf          *agbp,
        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;
 
        ASSERT(agno != NULLAGNUMBER);
@@ -419,7 +419,7 @@ xfs_refcountbt_calc_reserves(
        if (error)
                return error;
 
-       agf = XFS_BUF_TO_AGF(agbp);
+       agf = agbp->b_addr;
        agblocks = be32_to_cpu(agf->agf_length);
        tree_len = be32_to_cpu(agf->agf_refcount_blocks);
        xfs_trans_brelse(tp, agbp);
index 95b1c20452e70121071abfa225e811c875f17042..875032473bdbb6821d7b81bec2ea6e201796002a 100644 (file)
@@ -59,7 +59,7 @@ xfs_rmapbt_set_root(
        int                     inc)
 {
        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);
        int                     btnum = cur->bc_btnum;
        struct xfs_perag        *pag = xfs_perag_get(cur->bc_mp, seqno);
@@ -82,7 +82,7 @@ xfs_rmapbt_alloc_block(
        int                     *stat)
 {
        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;
        xfs_agblock_t           bno;
 
@@ -119,7 +119,7 @@ xfs_rmapbt_free_block(
        struct xfs_buf          *bp)
 {
        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;
        int                     error;
 
@@ -213,7 +213,7 @@ xfs_rmapbt_init_ptr_from_cur(
        struct xfs_btree_cur    *cur,
        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));
 
@@ -456,7 +456,7 @@ xfs_rmapbt_init_cursor(
        struct xfs_buf          *agbp,
        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;
 
        cur = kmem_zone_zalloc(xfs_btree_cur_zone, KM_NOFS);
@@ -567,7 +567,7 @@ xfs_rmapbt_calc_reserves(
        if (error)
                return error;
 
-       agf = XFS_BUF_TO_AGF(agbp);
+       agf = agbp->b_addr;
        agblocks = be32_to_cpu(agf->agf_length);
        tree_len = be32_to_cpu(agf->agf_rmap_blocks);
        xfs_trans_brelse(tp, agbp);
index 6b4e8d303da7d8578b7c4480e987e768a2429a0e..a82028512c62ad8527b18a5a203021fce9592bc4 100644 (file)
@@ -2070,7 +2070,7 @@ build_agf_agfl(
                do_error(_("Cannot grab AG %u AGF buffer, err=%d"),
                                agno, error);
        agf_buf->b_ops = &xfs_agf_buf_ops;
-       agf = XFS_BUF_TO_AGF(agf_buf);
+       agf = agf_buf->b_addr;
        memset(agf, 0, mp->m_sb.sb_sectsize);
 
 #ifdef XR_BLD_FREE_TRACE
index 32937ada78d6529900921063319f29d60c73bb86..e40ce1948431debafb5416970257843350ab4192 100644 (file)
@@ -2384,7 +2384,7 @@ scan_ag(
                objname = _("agf block");
                goto out_free_sbbuf;
        }
-       agf = XFS_BUF_TO_AGF(agfbuf);
+       agf = agfbuf->b_addr;
 
        error = salvage_buffer(mp->m_dev,
                        XFS_AG_DADDR(mp, agno, XFS_AGI_DADDR(mp)),