xfs: pass the pag to the trace_xrep_calc_ag_resblks{,_btsize} trace points
authorChristoph Hellwig <hch@lst.de>
Mon, 4 Nov 2024 04:18:35 +0000 (20:18 -0800)
committerDarrick J. Wong <djwong@kernel.org>
Tue, 5 Nov 2024 21:38:26 +0000 (13:38 -0800)
This requires holding the pag refcount a little longer, 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>
Reviewed-by: Darrick J. Wong <djwong@kernel.org>
Signed-off-by: Darrick J. Wong <djwong@kernel.org>
fs/xfs/scrub/repair.c
fs/xfs/scrub/trace.h

index 382092a6ea641057baa38833c499faa69cc2cf07..47f9b04e3798f16cc2837d655c5f89b3745113bf 100644 (file)
@@ -331,10 +331,8 @@ xrep_calc_ag_resblks(
                freelen = aglen;
                usedlen = aglen;
        }
-       xfs_perag_put(pag);
 
-       trace_xrep_calc_ag_resblks(mp, sm->sm_agno, icount, aglen,
-                       freelen, usedlen);
+       trace_xrep_calc_ag_resblks(pag, icount, aglen, freelen, usedlen);
 
        /*
         * Figure out how many blocks we'd need worst case to rebuild
@@ -372,8 +370,9 @@ xrep_calc_ag_resblks(
                rmapbt_sz = 0;
        }
 
-       trace_xrep_calc_ag_resblks_btsize(mp, sm->sm_agno, bnobt_sz,
-                       inobt_sz, rmapbt_sz, refcbt_sz);
+       trace_xrep_calc_ag_resblks_btsize(pag, bnobt_sz, inobt_sz, rmapbt_sz,
+                       refcbt_sz);
+       xfs_perag_put(pag);
 
        return max(max(bnobt_sz, inobt_sz), max(rmapbt_sz, refcbt_sz));
 }
index 992f87f52b7656bfd5bbbd625ded89d6cc9e5d67..0da641f046f3a7b5ebe6ffbb14460a64db7dbdca 100644 (file)
@@ -2189,10 +2189,10 @@ TRACE_EVENT(xrep_findroot_block,
                  __entry->level)
 )
 TRACE_EVENT(xrep_calc_ag_resblks,
-       TP_PROTO(struct xfs_mount *mp, xfs_agnumber_t agno,
-                xfs_agino_t icount, xfs_agblock_t aglen, xfs_agblock_t freelen,
+       TP_PROTO(const struct xfs_perag *pag, xfs_agino_t icount,
+                xfs_agblock_t aglen, xfs_agblock_t freelen,
                 xfs_agblock_t usedlen),
-       TP_ARGS(mp, agno, icount, aglen, freelen, usedlen),
+       TP_ARGS(pag, icount, aglen, freelen, usedlen),
        TP_STRUCT__entry(
                __field(dev_t, dev)
                __field(xfs_agnumber_t, agno)
@@ -2202,8 +2202,8 @@ TRACE_EVENT(xrep_calc_ag_resblks,
                __field(xfs_agblock_t, usedlen)
        ),
        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->icount = icount;
                __entry->aglen = aglen;
                __entry->freelen = freelen;
@@ -2218,10 +2218,10 @@ TRACE_EVENT(xrep_calc_ag_resblks,
                  __entry->usedlen)
 )
 TRACE_EVENT(xrep_calc_ag_resblks_btsize,
-       TP_PROTO(struct xfs_mount *mp, xfs_agnumber_t agno,
-                xfs_agblock_t bnobt_sz, xfs_agblock_t inobt_sz,
-                xfs_agblock_t rmapbt_sz, xfs_agblock_t refcbt_sz),
-       TP_ARGS(mp, agno, bnobt_sz, inobt_sz, rmapbt_sz, refcbt_sz),
+       TP_PROTO(const struct xfs_perag *pag, xfs_agblock_t bnobt_sz,
+                xfs_agblock_t inobt_sz, xfs_agblock_t rmapbt_sz,
+                xfs_agblock_t refcbt_sz),
+       TP_ARGS(pag, bnobt_sz, inobt_sz, rmapbt_sz, refcbt_sz),
        TP_STRUCT__entry(
                __field(dev_t, dev)
                __field(xfs_agnumber_t, agno)
@@ -2231,8 +2231,8 @@ TRACE_EVENT(xrep_calc_ag_resblks_btsize,
                __field(xfs_agblock_t, refcbt_sz)
        ),
        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->bnobt_sz = bnobt_sz;
                __entry->inobt_sz = inobt_sz;
                __entry->rmapbt_sz = rmapbt_sz;