]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
xfs: pass btree cursors to refcount btree tracepoints
authorDarrick J. Wong <djwong@kernel.org>
Tue, 2 Jul 2024 18:23:06 +0000 (11:23 -0700)
committerDarrick J. Wong <djwong@kernel.org>
Tue, 2 Jul 2024 18:37:05 +0000 (11:37 -0700)
Prepare the rest of refcount btree tracepoints for use with realtime
reflink by making them take the btree cursor object as a parameter.
This will save us a lot of trouble later on.

Remove the xfs_refcount_recover_extent tracepoint since it's already
covered by other refcount tracepoints.

Signed-off-by: Darrick J. Wong <djwong@kernel.org>
Reviewed-by: Christoph Hellwig <hch@lst.de>
fs/xfs/libxfs/xfs_refcount.c
fs/xfs/xfs_trace.h

index 1916f8281450eaeb44a5f10dea3754b660c53f5a..b777762494e7f71a8b80c30367b4d4b0c971c75c 100644 (file)
@@ -183,7 +183,7 @@ xfs_refcount_get_rec(
        if (fa)
                return xfs_refcount_complain_bad_rec(cur, fa, irec);
 
-       trace_xfs_refcount_get(cur->bc_mp, cur->bc_ag.pag->pag_agno, irec);
+       trace_xfs_refcount_get(cur, irec);
        return 0;
 }
 
@@ -201,7 +201,7 @@ xfs_refcount_update(
        uint32_t                start;
        int                     error;
 
-       trace_xfs_refcount_update(cur->bc_mp, cur->bc_ag.pag->pag_agno, irec);
+       trace_xfs_refcount_update(cur, irec);
 
        start = xfs_refcount_encode_startblock(irec->rc_startblock,
                        irec->rc_domain);
@@ -228,7 +228,7 @@ xfs_refcount_insert(
 {
        int                             error;
 
-       trace_xfs_refcount_insert(cur->bc_mp, cur->bc_ag.pag->pag_agno, irec);
+       trace_xfs_refcount_insert(cur, irec);
 
        cur->bc_rec.rc.rc_startblock = irec->rc_startblock;
        cur->bc_rec.rc.rc_blockcount = irec->rc_blockcount;
@@ -273,7 +273,7 @@ xfs_refcount_delete(
                error = -EFSCORRUPTED;
                goto out_error;
        }
-       trace_xfs_refcount_delete(cur->bc_mp, cur->bc_ag.pag->pag_agno, &irec);
+       trace_xfs_refcount_delete(cur, &irec);
        error = xfs_btree_delete(cur, i);
        if (XFS_IS_CORRUPT(cur->bc_mp, *i != 1)) {
                xfs_btree_mark_sick(cur);
@@ -410,8 +410,7 @@ xfs_refcount_split_extent(
                return 0;
 
        *shape_changed = true;
-       trace_xfs_refcount_split_extent(cur->bc_mp, cur->bc_ag.pag->pag_agno,
-                       &rcext, agbno);
+       trace_xfs_refcount_split_extent(cur, &rcext, agbno);
 
        /* Establish the right extent. */
        tmp = rcext;
@@ -454,8 +453,7 @@ xfs_refcount_merge_center_extents(
        int                             error;
        int                             found_rec;
 
-       trace_xfs_refcount_merge_center_extents(cur->bc_mp,
-                       cur->bc_ag.pag->pag_agno, left, center, right);
+       trace_xfs_refcount_merge_center_extents(cur, left, center, right);
 
        ASSERT(left->rc_domain == center->rc_domain);
        ASSERT(right->rc_domain == center->rc_domain);
@@ -536,8 +534,7 @@ xfs_refcount_merge_left_extent(
        int                             error;
        int                             found_rec;
 
-       trace_xfs_refcount_merge_left_extent(cur->bc_mp,
-                       cur->bc_ag.pag->pag_agno, left, cleft);
+       trace_xfs_refcount_merge_left_extent(cur, left, cleft);
 
        ASSERT(left->rc_domain == cleft->rc_domain);
 
@@ -601,8 +598,7 @@ xfs_refcount_merge_right_extent(
        int                             error;
        int                             found_rec;
 
-       trace_xfs_refcount_merge_right_extent(cur->bc_mp,
-                       cur->bc_ag.pag->pag_agno, cright, right);
+       trace_xfs_refcount_merge_right_extent(cur, cright, right);
 
        ASSERT(right->rc_domain == cright->rc_domain);
 
@@ -741,8 +737,7 @@ not_found:
                cleft->rc_refcount = 1;
                cleft->rc_domain = domain;
        }
-       trace_xfs_refcount_find_left_extent(cur->bc_mp, cur->bc_ag.pag->pag_agno,
-                       left, cleft, agbno);
+       trace_xfs_refcount_find_left_extent(cur, left, cleft, agbno);
        return error;
 
 out_error:
@@ -835,8 +830,8 @@ not_found:
                cright->rc_refcount = 1;
                cright->rc_domain = domain;
        }
-       trace_xfs_refcount_find_right_extent(cur->bc_mp, cur->bc_ag.pag->pag_agno,
-                       cright, right, agbno + aglen);
+       trace_xfs_refcount_find_right_extent(cur, cright, right,
+                       agbno + aglen);
        return error;
 
 out_error:
@@ -1139,8 +1134,7 @@ xfs_refcount_adjust_extents(
                        tmp.rc_refcount = 1 + adj;
                        tmp.rc_domain = XFS_REFC_DOMAIN_SHARED;
 
-                       trace_xfs_refcount_modify_extent(cur->bc_mp,
-                                       cur->bc_ag.pag->pag_agno, &tmp);
+                       trace_xfs_refcount_modify_extent(cur, &tmp);
 
                        /*
                         * Either cover the hole (increment) or
@@ -1205,8 +1199,7 @@ xfs_refcount_adjust_extents(
                if (ext.rc_refcount == MAXREFCOUNT)
                        goto skip;
                ext.rc_refcount += adj;
-               trace_xfs_refcount_modify_extent(cur->bc_mp,
-                               cur->bc_ag.pag->pag_agno, &ext);
+               trace_xfs_refcount_modify_extent(cur, &ext);
                cur->bc_refc.nr_ops++;
                if (ext.rc_refcount > 1) {
                        error = xfs_refcount_update(cur, &ext);
@@ -1721,8 +1714,7 @@ xfs_refcount_adjust_cow_extents(
                tmp.rc_refcount = 1;
                tmp.rc_domain = XFS_REFC_DOMAIN_COW;
 
-               trace_xfs_refcount_modify_extent(cur->bc_mp,
-                               cur->bc_ag.pag->pag_agno, &tmp);
+               trace_xfs_refcount_modify_extent(cur, &tmp);
 
                error = xfs_refcount_insert(cur, &tmp,
                                &found_tmp);
@@ -1753,8 +1745,7 @@ xfs_refcount_adjust_cow_extents(
                }
 
                ext.rc_refcount = 0;
-               trace_xfs_refcount_modify_extent(cur->bc_mp,
-                               cur->bc_ag.pag->pag_agno, &ext);
+               trace_xfs_refcount_modify_extent(cur, &ext);
                error = xfs_refcount_delete(cur, &found_rec);
                if (error)
                        goto out_error;
@@ -1990,9 +1981,6 @@ xfs_refcount_recover_cow_leftovers(
                if (error)
                        goto out_free;
 
-               trace_xfs_refcount_recover_extent(mp, pag->pag_agno,
-                               &rr->rr_rrec);
-
                /* Free the orphan record */
                fsb = XFS_AGB_TO_FSB(mp, pag->pag_agno,
                                rr->rr_rrec.rc_startblock);
index c945b2d9b6bcf30470cad4ea2b8eb01fabcb82d9..d4725d66a9b2d6528b07a019c8a83dab9f7012d9 100644 (file)
@@ -3233,9 +3233,8 @@ TRACE_EVENT(xfs_refcount_lookup,
 
 /* single-rcext tracepoint class */
 DECLARE_EVENT_CLASS(xfs_refcount_extent_class,
-       TP_PROTO(struct xfs_mount *mp, xfs_agnumber_t agno,
-                struct xfs_refcount_irec *irec),
-       TP_ARGS(mp, agno, irec),
+       TP_PROTO(struct xfs_btree_cur *cur, struct xfs_refcount_irec *irec),
+       TP_ARGS(cur, irec),
        TP_STRUCT__entry(
                __field(dev_t, dev)
                __field(xfs_agnumber_t, agno)
@@ -3245,8 +3244,8 @@ DECLARE_EVENT_CLASS(xfs_refcount_extent_class,
                __field(xfs_nlink_t, refcount)
        ),
        TP_fast_assign(
-               __entry->dev = mp->m_super->s_dev;
-               __entry->agno = agno;
+               __entry->dev = cur->bc_mp->m_super->s_dev;
+               __entry->agno = cur->bc_ag.pag->pag_agno;
                __entry->domain = irec->rc_domain;
                __entry->startblock = irec->rc_startblock;
                __entry->blockcount = irec->rc_blockcount;
@@ -3263,15 +3262,14 @@ DECLARE_EVENT_CLASS(xfs_refcount_extent_class,
 
 #define DEFINE_REFCOUNT_EXTENT_EVENT(name) \
 DEFINE_EVENT(xfs_refcount_extent_class, name, \
-       TP_PROTO(struct xfs_mount *mp, xfs_agnumber_t agno, \
-                struct xfs_refcount_irec *irec), \
-       TP_ARGS(mp, agno, irec))
+       TP_PROTO(struct xfs_btree_cur *cur, struct xfs_refcount_irec *irec), \
+       TP_ARGS(cur, irec))
 
 /* single-rcext and an agbno tracepoint class */
 DECLARE_EVENT_CLASS(xfs_refcount_extent_at_class,
-       TP_PROTO(struct xfs_mount *mp, xfs_agnumber_t agno,
-                struct xfs_refcount_irec *irec, xfs_agblock_t agbno),
-       TP_ARGS(mp, agno, irec, agbno),
+       TP_PROTO(struct xfs_btree_cur *cur, struct xfs_refcount_irec *irec,
+                xfs_agblock_t agbno),
+       TP_ARGS(cur, irec, agbno),
        TP_STRUCT__entry(
                __field(dev_t, dev)
                __field(xfs_agnumber_t, agno)
@@ -3282,8 +3280,8 @@ DECLARE_EVENT_CLASS(xfs_refcount_extent_at_class,
                __field(xfs_agblock_t, agbno)
        ),
        TP_fast_assign(
-               __entry->dev = mp->m_super->s_dev;
-               __entry->agno = agno;
+               __entry->dev = cur->bc_mp->m_super->s_dev;
+               __entry->agno = cur->bc_ag.pag->pag_agno;
                __entry->domain = irec->rc_domain;
                __entry->startblock = irec->rc_startblock;
                __entry->blockcount = irec->rc_blockcount;
@@ -3302,15 +3300,15 @@ DECLARE_EVENT_CLASS(xfs_refcount_extent_at_class,
 
 #define DEFINE_REFCOUNT_EXTENT_AT_EVENT(name) \
 DEFINE_EVENT(xfs_refcount_extent_at_class, name, \
-       TP_PROTO(struct xfs_mount *mp, xfs_agnumber_t agno, \
-                struct xfs_refcount_irec *irec, xfs_agblock_t agbno), \
-       TP_ARGS(mp, agno, irec, agbno))
+       TP_PROTO(struct xfs_btree_cur *cur, struct xfs_refcount_irec *irec, \
+                xfs_agblock_t agbno), \
+       TP_ARGS(cur, irec, agbno))
 
 /* double-rcext tracepoint class */
 DECLARE_EVENT_CLASS(xfs_refcount_double_extent_class,
-       TP_PROTO(struct xfs_mount *mp, xfs_agnumber_t agno,
-                struct xfs_refcount_irec *i1, struct xfs_refcount_irec *i2),
-       TP_ARGS(mp, agno, i1, i2),
+       TP_PROTO(struct xfs_btree_cur *cur, struct xfs_refcount_irec *i1,
+               struct xfs_refcount_irec *i2),
+       TP_ARGS(cur, i1, i2),
        TP_STRUCT__entry(
                __field(dev_t, dev)
                __field(xfs_agnumber_t, agno)
@@ -3324,8 +3322,8 @@ DECLARE_EVENT_CLASS(xfs_refcount_double_extent_class,
                __field(xfs_nlink_t, i2_refcount)
        ),
        TP_fast_assign(
-               __entry->dev = mp->m_super->s_dev;
-               __entry->agno = agno;
+               __entry->dev = cur->bc_mp->m_super->s_dev;
+               __entry->agno = cur->bc_ag.pag->pag_agno;
                __entry->i1_domain = i1->rc_domain;
                __entry->i1_startblock = i1->rc_startblock;
                __entry->i1_blockcount = i1->rc_blockcount;
@@ -3351,16 +3349,15 @@ DECLARE_EVENT_CLASS(xfs_refcount_double_extent_class,
 
 #define DEFINE_REFCOUNT_DOUBLE_EXTENT_EVENT(name) \
 DEFINE_EVENT(xfs_refcount_double_extent_class, name, \
-       TP_PROTO(struct xfs_mount *mp, xfs_agnumber_t agno, \
-                struct xfs_refcount_irec *i1, struct xfs_refcount_irec *i2), \
-       TP_ARGS(mp, agno, i1, i2))
+       TP_PROTO(struct xfs_btree_cur *cur, struct xfs_refcount_irec *i1, \
+                struct xfs_refcount_irec *i2), \
+       TP_ARGS(cur, i1, i2))
 
 /* double-rcext and an agbno tracepoint class */
 DECLARE_EVENT_CLASS(xfs_refcount_double_extent_at_class,
-       TP_PROTO(struct xfs_mount *mp, xfs_agnumber_t agno,
-                struct xfs_refcount_irec *i1, struct xfs_refcount_irec *i2,
-                xfs_agblock_t agbno),
-       TP_ARGS(mp, agno, i1, i2, agbno),
+       TP_PROTO(struct xfs_btree_cur *cur, struct xfs_refcount_irec *i1,
+                struct xfs_refcount_irec *i2, xfs_agblock_t agbno),
+       TP_ARGS(cur, i1, i2, agbno),
        TP_STRUCT__entry(
                __field(dev_t, dev)
                __field(xfs_agnumber_t, agno)
@@ -3375,8 +3372,8 @@ DECLARE_EVENT_CLASS(xfs_refcount_double_extent_at_class,
                __field(xfs_agblock_t, agbno)
        ),
        TP_fast_assign(
-               __entry->dev = mp->m_super->s_dev;
-               __entry->agno = agno;
+               __entry->dev = cur->bc_mp->m_super->s_dev;
+               __entry->agno = cur->bc_ag.pag->pag_agno;
                __entry->i1_domain = i1->rc_domain;
                __entry->i1_startblock = i1->rc_startblock;
                __entry->i1_blockcount = i1->rc_blockcount;
@@ -3404,17 +3401,15 @@ DECLARE_EVENT_CLASS(xfs_refcount_double_extent_at_class,
 
 #define DEFINE_REFCOUNT_DOUBLE_EXTENT_AT_EVENT(name) \
 DEFINE_EVENT(xfs_refcount_double_extent_at_class, name, \
-       TP_PROTO(struct xfs_mount *mp, xfs_agnumber_t agno, \
-                struct xfs_refcount_irec *i1, struct xfs_refcount_irec *i2, \
-                xfs_agblock_t agbno), \
-       TP_ARGS(mp, agno, i1, i2, agbno))
+       TP_PROTO(struct xfs_btree_cur *cur, struct xfs_refcount_irec *i1, \
+               struct xfs_refcount_irec *i2, xfs_agblock_t agbno), \
+       TP_ARGS(cur, i1, i2, agbno))
 
 /* triple-rcext tracepoint class */
 DECLARE_EVENT_CLASS(xfs_refcount_triple_extent_class,
-       TP_PROTO(struct xfs_mount *mp, xfs_agnumber_t agno,
-                struct xfs_refcount_irec *i1, struct xfs_refcount_irec *i2,
-                struct xfs_refcount_irec *i3),
-       TP_ARGS(mp, agno, i1, i2, i3),
+       TP_PROTO(struct xfs_btree_cur *cur, struct xfs_refcount_irec *i1,
+               struct xfs_refcount_irec *i2, struct xfs_refcount_irec *i3),
+       TP_ARGS(cur, i1, i2, i3),
        TP_STRUCT__entry(
                __field(dev_t, dev)
                __field(xfs_agnumber_t, agno)
@@ -3432,8 +3427,8 @@ DECLARE_EVENT_CLASS(xfs_refcount_triple_extent_class,
                __field(xfs_nlink_t, i3_refcount)
        ),
        TP_fast_assign(
-               __entry->dev = mp->m_super->s_dev;
-               __entry->agno = agno;
+               __entry->dev = cur->bc_mp->m_super->s_dev;
+               __entry->agno = cur->bc_ag.pag->pag_agno;
                __entry->i1_domain = i1->rc_domain;
                __entry->i1_startblock = i1->rc_startblock;
                __entry->i1_blockcount = i1->rc_blockcount;
@@ -3468,10 +3463,9 @@ DECLARE_EVENT_CLASS(xfs_refcount_triple_extent_class,
 
 #define DEFINE_REFCOUNT_TRIPLE_EXTENT_EVENT(name) \
 DEFINE_EVENT(xfs_refcount_triple_extent_class, name, \
-       TP_PROTO(struct xfs_mount *mp, xfs_agnumber_t agno, \
-                struct xfs_refcount_irec *i1, struct xfs_refcount_irec *i2, \
-                struct xfs_refcount_irec *i3), \
-       TP_ARGS(mp, agno, i1, i2, i3))
+       TP_PROTO(struct xfs_btree_cur *cur, struct xfs_refcount_irec *i1, \
+               struct xfs_refcount_irec *i2, struct xfs_refcount_irec *i3), \
+       TP_ARGS(cur, i1, i2, i3))
 
 /* refcount btree tracepoints */
 DEFINE_REFCOUNT_EXTENT_EVENT(xfs_refcount_get);
@@ -3489,7 +3483,6 @@ DEFINE_REFCOUNT_EVENT(xfs_refcount_cow_increase);
 DEFINE_REFCOUNT_EVENT(xfs_refcount_cow_decrease);
 DEFINE_REFCOUNT_TRIPLE_EXTENT_EVENT(xfs_refcount_merge_center_extents);
 DEFINE_REFCOUNT_EXTENT_EVENT(xfs_refcount_modify_extent);
-DEFINE_REFCOUNT_EXTENT_EVENT(xfs_refcount_recover_extent);
 DEFINE_REFCOUNT_EXTENT_AT_EVENT(xfs_refcount_split_extent);
 DEFINE_REFCOUNT_DOUBLE_EXTENT_EVENT(xfs_refcount_merge_left_extent);
 DEFINE_REFCOUNT_DOUBLE_EXTENT_EVENT(xfs_refcount_merge_right_extent);