]> www.infradead.org Git - users/hch/xfs.git/commitdiff
xfs: prepare rmap btree cursor tracepoints for realtime
authorDarrick J. Wong <djwong@kernel.org>
Mon, 23 Sep 2024 20:41:52 +0000 (13:41 -0700)
committerChristoph Hellwig <hch@lst.de>
Wed, 9 Oct 2024 13:55:45 +0000 (15:55 +0200)
Rework the rmap btree cursor tracepoints in preparation to handle the
realtime rmap btree cursor.  Mostly this involves renaming the field to
"rmapbno" and extracting the group number from the cursor when possible.

Signed-off-by: Darrick J. Wong <djwong@kernel.org>
fs/xfs/xfs_rmap_item.c
fs/xfs/xfs_trace.h

index 42f16c0e07e92bece1c448c3f1c851b466e0f2ad..61408cf840ce12cf30be108468f12df953fb37dd 100644 (file)
@@ -351,10 +351,10 @@ xfs_rmap_defer_add(
 {
        struct xfs_mount        *mp = tp->t_mountp;
 
-       trace_xfs_rmap_defer(mp, ri);
-
        ri->ri_group = xfs_group_intent_get(mp, ri->ri_bmap.br_startblock,
                        XG_TYPE_AG);
+
+       trace_xfs_rmap_defer(mp, ri);
        xfs_defer_add(tp, &ri->ri_list, &xfs_rmap_update_defer_type);
 }
 
index 5ccdb9af82813bbd2482b283daabd96712ddf765..e008cc3fcf3f84f4ebb47d8638024f35b38f40bd 100644 (file)
  * ino: filesystem inode number
  *
  * agbno: per-AG block number in fs blocks
+ * rgbno: per-rtgroup block number in fs blocks
  * startblock: physical block number for file mappings.  This is either a
  *             segmented fsblock for data device mappings, or a rfsblock
  *             for realtime device mappings
  * fsbcount: number of blocks in an extent, in fs blocks
  *
+ * gbno: generic allocation group block number.  This is an agbno for
+ *          per-AG rmap btrees or a rgbno for realtime rmap btrees.
+ *
  * daddr: physical block number in 512b blocks
  * bbcount: number of blocks in a physical extent, in 512b blocks
  *
@@ -2919,13 +2923,14 @@ DEFINE_DEFER_PENDING_ITEM_EVENT(xfs_defer_finish_item);
 /* rmap tracepoints */
 DECLARE_EVENT_CLASS(xfs_rmap_class,
        TP_PROTO(struct xfs_btree_cur *cur,
-                xfs_agblock_t agbno, xfs_extlen_t len, bool unwritten,
+                xfs_agblock_t rmapbno, xfs_extlen_t len, bool unwritten,
                 const struct xfs_owner_info *oinfo),
-       TP_ARGS(cur, agbno, len, unwritten, oinfo),
+       TP_ARGS(cur, rmapbno, len, unwritten, oinfo),
        TP_STRUCT__entry(
                __field(dev_t, dev)
+               __field(enum xfs_group_type, type)
                __field(xfs_agnumber_t, agno)
-               __field(xfs_agblock_t, agbno)
+               __field(xfs_agblock_t, rmapbno)
                __field(xfs_extlen_t, len)
                __field(uint64_t, owner)
                __field(uint64_t, offset)
@@ -2933,8 +2938,9 @@ DECLARE_EVENT_CLASS(xfs_rmap_class,
        ),
        TP_fast_assign(
                __entry->dev = cur->bc_mp->m_super->s_dev;
+               __entry->type = cur->bc_group->xg_type;
                __entry->agno = cur->bc_group->xg_index;
-               __entry->agbno = agbno;
+               __entry->rmapbno = rmapbno;
                __entry->len = len;
                __entry->owner = oinfo->oi_owner;
                __entry->offset = oinfo->oi_offset;
@@ -2942,10 +2948,11 @@ DECLARE_EVENT_CLASS(xfs_rmap_class,
                if (unwritten)
                        __entry->flags |= XFS_RMAP_UNWRITTEN;
        ),
-       TP_printk("dev %d:%d agno 0x%x agbno 0x%x fsbcount 0x%x owner 0x%llx fileoff 0x%llx flags 0x%lx",
+       TP_printk("dev %d:%d %sno 0x%x gbno 0x%x fsbcount 0x%x owner 0x%llx fileoff 0x%llx flags 0x%lx",
                  MAJOR(__entry->dev), MINOR(__entry->dev),
+                 __print_symbolic(__entry->type, XG_TYPE_STRINGS),
                  __entry->agno,
-                 __entry->agbno,
+                 __entry->rmapbno,
                  __entry->len,
                  __entry->owner,
                  __entry->offset,
@@ -2954,9 +2961,9 @@ DECLARE_EVENT_CLASS(xfs_rmap_class,
 #define DEFINE_RMAP_EVENT(name) \
 DEFINE_EVENT(xfs_rmap_class, name, \
        TP_PROTO(struct xfs_btree_cur *cur, \
-                xfs_agblock_t agbno, xfs_extlen_t len, bool unwritten, \
+                xfs_agblock_t rmapbno, xfs_extlen_t len, bool unwritten, \
                 const struct xfs_owner_info *oinfo), \
-       TP_ARGS(cur, agbno, len, unwritten, oinfo))
+       TP_ARGS(cur, rmapbno, len, unwritten, oinfo))
 
 /* btree cursor error/%ip tracepoint class */
 DECLARE_EVENT_CLASS(xfs_btree_error_class,
@@ -3019,47 +3026,36 @@ TRACE_EVENT(xfs_rmap_convert_state,
        TP_ARGS(cur, state, caller_ip),
        TP_STRUCT__entry(
                __field(dev_t, dev)
+               __field(enum xfs_group_type, type)
                __field(xfs_agnumber_t, agno)
-               __field(xfs_ino_t, ino)
                __field(int, state)
                __field(unsigned long, caller_ip)
        ),
        TP_fast_assign(
                __entry->dev = cur->bc_mp->m_super->s_dev;
-               switch (cur->bc_ops->type) {
-               case XFS_BTREE_TYPE_INODE:
-                       __entry->agno = 0;
-                       __entry->ino = cur->bc_ino.ip->i_ino;
-                       break;
-               case XFS_BTREE_TYPE_AG:
-                       __entry->agno = cur->bc_group->xg_index;
-                       __entry->ino = 0;
-                       break;
-               case XFS_BTREE_TYPE_MEM:
-                       __entry->agno = 0;
-                       __entry->ino = 0;
-                       break;
-               }
+               __entry->type = cur->bc_group->xg_type;
+               __entry->agno = cur->bc_group->xg_index;
                __entry->state = state;
                __entry->caller_ip = caller_ip;
        ),
-       TP_printk("dev %d:%d agno 0x%x ino 0x%llx state %d caller %pS",
+       TP_printk("dev %d:%d %sno 0x%x state %d caller %pS",
                  MAJOR(__entry->dev), MINOR(__entry->dev),
+                 __print_symbolic(__entry->type, XG_TYPE_STRINGS),
                  __entry->agno,
-                 __entry->ino,
                  __entry->state,
                  (char *)__entry->caller_ip)
 );
 
 DECLARE_EVENT_CLASS(xfs_rmapbt_class,
        TP_PROTO(struct xfs_btree_cur *cur,
-                xfs_agblock_t agbno, xfs_extlen_t len,
+                xfs_agblock_t rmapbno, xfs_extlen_t len,
                 uint64_t owner, uint64_t offset, unsigned int flags),
-       TP_ARGS(cur, agbno, len, owner, offset, flags),
+       TP_ARGS(cur, rmapbno, len, owner, offset, flags),
        TP_STRUCT__entry(
                __field(dev_t, dev)
+               __field(enum xfs_group_type, type)
                __field(xfs_agnumber_t, agno)
-               __field(xfs_agblock_t, agbno)
+               __field(xfs_agblock_t, rmapbno)
                __field(xfs_extlen_t, len)
                __field(uint64_t, owner)
                __field(uint64_t, offset)
@@ -3067,17 +3063,19 @@ DECLARE_EVENT_CLASS(xfs_rmapbt_class,
        ),
        TP_fast_assign(
                __entry->dev = cur->bc_mp->m_super->s_dev;
+               __entry->type = cur->bc_group->xg_type;
                __entry->agno = cur->bc_group->xg_index;
-               __entry->agbno = agbno;
+               __entry->rmapbno = rmapbno;
                __entry->len = len;
                __entry->owner = owner;
                __entry->offset = offset;
                __entry->flags = flags;
        ),
-       TP_printk("dev %d:%d agno 0x%x agbno 0x%x fsbcount 0x%x owner 0x%llx fileoff 0x%llx flags 0x%x",
+       TP_printk("dev %d:%d %sno 0x%x gbno 0x%x fsbcount 0x%x owner 0x%llx fileoff 0x%llx flags 0x%x",
                  MAJOR(__entry->dev), MINOR(__entry->dev),
+                 __print_symbolic(__entry->type, XG_TYPE_STRINGS),
                  __entry->agno,
-                 __entry->agbno,
+                 __entry->rmapbno,
                  __entry->len,
                  __entry->owner,
                  __entry->offset,
@@ -3086,9 +3084,9 @@ DECLARE_EVENT_CLASS(xfs_rmapbt_class,
 #define DEFINE_RMAPBT_EVENT(name) \
 DEFINE_EVENT(xfs_rmapbt_class, name, \
        TP_PROTO(struct xfs_btree_cur *cur, \
-                xfs_agblock_t agbno, xfs_extlen_t len, \
+                xfs_agblock_t rmapbno, xfs_extlen_t len, \
                 uint64_t owner, uint64_t offset, unsigned int flags), \
-       TP_ARGS(cur, agbno, len, owner, offset, flags))
+       TP_ARGS(cur, rmapbno, len, owner, offset, flags))
 
 TRACE_DEFINE_ENUM(XFS_RMAP_MAP);
 TRACE_DEFINE_ENUM(XFS_RMAP_MAP_SHARED);
@@ -3105,8 +3103,9 @@ DECLARE_EVENT_CLASS(xfs_rmap_deferred_class,
        TP_STRUCT__entry(
                __field(dev_t, dev)
                __field(unsigned long long, owner)
+               __field(enum xfs_group_type, type)
                __field(xfs_agnumber_t, agno)
-               __field(xfs_agblock_t, agbno)
+               __field(xfs_agblock_t, rmapbno)
                __field(int, whichfork)
                __field(xfs_fileoff_t, l_loff)
                __field(xfs_filblks_t, l_len)
@@ -3115,9 +3114,11 @@ DECLARE_EVENT_CLASS(xfs_rmap_deferred_class,
        ),
        TP_fast_assign(
                __entry->dev = mp->m_super->s_dev;
-               __entry->agno = XFS_FSB_TO_AGNO(mp, ri->ri_bmap.br_startblock);
-               __entry->agbno = XFS_FSB_TO_AGBNO(mp,
-                                       ri->ri_bmap.br_startblock);
+               __entry->type = ri->ri_group->xg_type;
+               __entry->agno = ri->ri_group->xg_index;
+               __entry->rmapbno = xfs_fsb_to_gbno(mp,
+                                                  ri->ri_bmap.br_startblock,
+                                                  ri->ri_group->xg_type);
                __entry->owner = ri->ri_owner;
                __entry->whichfork = ri->ri_whichfork;
                __entry->l_loff = ri->ri_bmap.br_startoff;
@@ -3125,11 +3126,12 @@ DECLARE_EVENT_CLASS(xfs_rmap_deferred_class,
                __entry->l_state = ri->ri_bmap.br_state;
                __entry->op = ri->ri_type;
        ),
-       TP_printk("dev %d:%d op %s agno 0x%x agbno 0x%x owner 0x%llx %s fileoff 0x%llx fsbcount 0x%llx state %d",
+       TP_printk("dev %d:%d op %s %sno 0x%x gbno 0x%x owner 0x%llx %s fileoff 0x%llx fsbcount 0x%llx state %d",
                  MAJOR(__entry->dev), MINOR(__entry->dev),
                  __print_symbolic(__entry->op, XFS_RMAP_INTENT_STRINGS),
+                 __print_symbolic(__entry->type, XG_TYPE_STRINGS),
                  __entry->agno,
-                 __entry->agbno,
+                 __entry->rmapbno,
                  __entry->owner,
                  __print_symbolic(__entry->whichfork, XFS_WHICHFORK_STRINGS),
                  __entry->l_loff,
@@ -3991,7 +3993,7 @@ TRACE_EVENT(xfs_fsmap_mapping,
                __entry->offset = frec->offset;
                __entry->flags = frec->rm_flags;
        ),
-       TP_printk("dev %d:%d keydev %d:%d agno 0x%x rmapbno 0x%x start_daddr 0x%llx len_daddr 0x%llx owner 0x%llx fileoff 0x%llx flags 0x%x",
+       TP_printk("dev %d:%d keydev %d:%d agno 0x%x gbno 0x%x start_daddr 0x%llx len_daddr 0x%llx owner 0x%llx fileoff 0x%llx flags 0x%x",
                  MAJOR(__entry->dev), MINOR(__entry->dev),
                  MAJOR(__entry->keydev), MINOR(__entry->keydev),
                  __entry->agno,