]> www.infradead.org Git - users/hch/xfs.git/commitdiff
xfs: pass the pag to the xrep_newbt_extent_class tracepoints
authorChristoph Hellwig <hch@lst.de>
Sun, 1 Sep 2024 05:39:19 +0000 (08:39 +0300)
committerChristoph Hellwig <hch@lst.de>
Sun, 22 Sep 2024 05:37:29 +0000 (07:37 +0200)
This requires moving a few of the callsites a little bit to ensure that
we already have the reference, but allows for the decoding to only happen
when tracing is actually enabled, and cleans up the callsites a bit.

Signed-off-by: Christoph Hellwig <hch@lst.de>
fs/xfs/scrub/alloc_repair.c
fs/xfs/scrub/newbt.c
fs/xfs/scrub/trace.h

index 30295898cc8a638b68aebd7bb525a582f2218d9f..6fd0e193f0b73949f116ee23447afef408858007 100644 (file)
@@ -484,8 +484,8 @@ xrep_abt_reserve_space(
                ASSERT(arec.ar_blockcount <= UINT_MAX);
                len = min_t(unsigned int, arec.ar_blockcount, desired);
 
-               trace_xrep_newbt_alloc_ag_blocks(sc->mp, sc->sa.pag->pag_agno,
-                               arec.ar_startblock, len, XFS_RMAP_OWN_AG);
+               trace_xrep_newbt_alloc_ag_blocks(sc->sa.pag, arec.ar_startblock,
+                               len, XFS_RMAP_OWN_AG);
 
                error = xrep_newbt_add_extent(&ra->new_bnobt, sc->sa.pag,
                                arec.ar_startblock, len);
@@ -554,8 +554,8 @@ xrep_abt_dispose_one(
        if (free_aglen == 0)
                return 0;
 
-       trace_xrep_newbt_free_blocks(sc->mp, resv->pag->pag_agno, free_agbno,
-                       free_aglen, ra->new_bnobt.oinfo.oi_owner);
+       trace_xrep_newbt_free_blocks(resv->pag, free_agbno, free_aglen,
+                       ra->new_bnobt.oinfo.oi_owner);
 
        error = __xfs_free_extent(sc->tp, resv->pag, free_agbno, free_aglen,
                        &ra->new_bnobt.oinfo, XFS_AG_RESV_IGNORE, true);
index baa00e1cf81ab2b917810cc2f2d913142b6e8269..81cad6c4fe6d9d0ae8fc8b31bde8def0f6aa62ec 100644 (file)
@@ -250,16 +250,15 @@ xrep_newbt_alloc_ag_blocks(
                        return -ENOSPC;
 
                agno = XFS_FSB_TO_AGNO(mp, args.fsbno);
-
-               trace_xrep_newbt_alloc_ag_blocks(mp, agno,
-                               XFS_FSB_TO_AGBNO(mp, args.fsbno), args.len,
-                               xnr->oinfo.oi_owner);
-
                if (agno != sc->sa.pag->pag_agno) {
                        ASSERT(agno == sc->sa.pag->pag_agno);
                        return -EFSCORRUPTED;
                }
 
+               trace_xrep_newbt_alloc_ag_blocks(sc->sa.pag,
+                               XFS_FSB_TO_AGBNO(mp, args.fsbno), args.len,
+                               xnr->oinfo.oi_owner);
+
                error = xrep_newbt_add_blocks(xnr, sc->sa.pag, &args);
                if (error)
                        return error;
@@ -325,16 +324,16 @@ xrep_newbt_alloc_file_blocks(
 
                agno = XFS_FSB_TO_AGNO(mp, args.fsbno);
 
-               trace_xrep_newbt_alloc_file_blocks(mp, agno,
-                               XFS_FSB_TO_AGBNO(mp, args.fsbno), args.len,
-                               xnr->oinfo.oi_owner);
-
                pag = xfs_perag_get(mp, agno);
                if (!pag) {
                        ASSERT(0);
                        return -EFSCORRUPTED;
                }
 
+               trace_xrep_newbt_alloc_file_blocks(pag,
+                               XFS_FSB_TO_AGBNO(mp, args.fsbno), args.len,
+                               xnr->oinfo.oi_owner);
+
                error = xrep_newbt_add_blocks(xnr, pag, &args);
                xfs_perag_put(pag);
                if (error)
@@ -383,8 +382,8 @@ xrep_newbt_free_extent(
                 * space reservation, let the existing EFI free the entire
                 * space extent.
                 */
-               trace_xrep_newbt_free_blocks(sc->mp, resv->pag->pag_agno,
-                               free_agbno, free_aglen, xnr->oinfo.oi_owner);
+               trace_xrep_newbt_free_blocks(resv->pag, free_agbno, free_aglen,
+                               xnr->oinfo.oi_owner);
                xfs_alloc_commit_autoreap(sc->tp, &resv->autoreap);
                return 1;
        }
@@ -401,8 +400,8 @@ xrep_newbt_free_extent(
        if (free_aglen == 0)
                return 0;
 
-       trace_xrep_newbt_free_blocks(sc->mp, resv->pag->pag_agno, free_agbno,
-                       free_aglen, xnr->oinfo.oi_owner);
+       trace_xrep_newbt_free_blocks(resv->pag, free_agbno, free_aglen,
+                       xnr->oinfo.oi_owner);
 
        ASSERT(xnr->resv != XFS_AG_RESV_AGFL);
        ASSERT(xnr->resv != XFS_AG_RESV_IGNORE);
@@ -514,7 +513,6 @@ xrep_newbt_claim_block(
        union xfs_btree_ptr     *ptr)
 {
        struct xrep_newbt_resv  *resv;
-       struct xfs_mount        *mp = cur->bc_mp;
        xfs_agblock_t           agbno;
 
        /*
@@ -539,8 +537,7 @@ xrep_newbt_claim_block(
        if (resv->used == resv->len)
                list_move_tail(&resv->list, &xnr->resv_list);
 
-       trace_xrep_newbt_claim_block(mp, resv->pag->pag_agno, agbno, 1,
-                       xnr->oinfo.oi_owner);
+       trace_xrep_newbt_claim_block(resv->pag, agbno, 1, xnr->oinfo.oi_owner);
 
        if (cur->bc_ops->ptr_len == XFS_BTREE_LONG_PTR_LEN)
                ptr->l = cpu_to_be64(xfs_agbno_to_fsb(resv->pag, agbno));
index 0da641f046f3a7b5ebe6ffbb14460a64db7dbdca..16c275cb6520de8d3fb454f9671f6c3fd32fc41d 100644 (file)
@@ -2272,10 +2272,9 @@ TRACE_EVENT(xrep_reset_counters,
 )
 
 DECLARE_EVENT_CLASS(xrep_newbt_extent_class,
-       TP_PROTO(struct xfs_mount *mp, xfs_agnumber_t agno,
-                xfs_agblock_t agbno, xfs_extlen_t len,
-                int64_t owner),
-       TP_ARGS(mp, agno, agbno, len, owner),
+       TP_PROTO(const struct xfs_perag *pag, xfs_agblock_t agbno,
+                xfs_extlen_t len, int64_t owner),
+       TP_ARGS(pag, agbno, len, owner),
        TP_STRUCT__entry(
                __field(dev_t, dev)
                __field(xfs_agnumber_t, agno)
@@ -2284,8 +2283,8 @@ DECLARE_EVENT_CLASS(xrep_newbt_extent_class,
                __field(int64_t, owner)
        ),
        TP_fast_assign(
-               __entry->dev = mp->m_super->s_dev;
-               __entry->agno = agno;
+               __entry->dev = pag->pag_mount->m_super->s_dev;
+               __entry->agno = pag->pag_agno;
                __entry->agbno = agbno;
                __entry->len = len;
                __entry->owner = owner;
@@ -2299,10 +2298,9 @@ DECLARE_EVENT_CLASS(xrep_newbt_extent_class,
 );
 #define DEFINE_NEWBT_EXTENT_EVENT(name) \
 DEFINE_EVENT(xrep_newbt_extent_class, name, \
-       TP_PROTO(struct xfs_mount *mp, xfs_agnumber_t agno, \
-                xfs_agblock_t agbno, xfs_extlen_t len, \
+       TP_PROTO(struct xfs_perag *pag, xfs_agblock_t agbno, xfs_extlen_t len, \
                 int64_t owner), \
-       TP_ARGS(mp, agno, agbno, len, owner))
+       TP_ARGS(pag, agbno, len, owner))
 DEFINE_NEWBT_EXTENT_EVENT(xrep_newbt_alloc_ag_blocks);
 DEFINE_NEWBT_EXTENT_EVENT(xrep_newbt_alloc_file_blocks);
 DEFINE_NEWBT_EXTENT_EVENT(xrep_newbt_free_blocks);