*
  * rmapbno: physical block number for a reverse mapping.  This is an agbno for
  *          per-AG rmap btrees or a rgbno for realtime rmap btrees.
+ * refcbno: physical block number for a refcount record.  This is an agbno for
+ *          per-AG refcount btrees or a rgbno for realtime refcount btrees.
  *
  * daddr: physical block number in 512b blocks
  * bbcount: number of blocks in a physical extent, in 512b blocks
 /* refcount tracepoint classes */
 
 DECLARE_EVENT_CLASS(xfs_refcount_class,
-       TP_PROTO(struct xfs_btree_cur *cur, xfs_agblock_t agbno,
+       TP_PROTO(struct xfs_btree_cur *cur, xfs_agblock_t refcbno,
                xfs_extlen_t len),
-       TP_ARGS(cur, agbno, len),
+       TP_ARGS(cur, refcbno, len),
        TP_STRUCT__entry(
                __field(dev_t, dev)
+               __field(dev_t, opdev)
                __field(xfs_agnumber_t, agno)
-               __field(xfs_agblock_t, agbno)
+               __field(xfs_agblock_t, refcbno)
                __field(xfs_extlen_t, len)
        ),
        TP_fast_assign(
                __entry->dev = cur->bc_mp->m_super->s_dev;
-               __entry->agno = cur->bc_group->xg_index;
-               __entry->agbno = agbno;
+               xfs_refcountbt_crack_agno_opdev(cur, &__entry->agno, &__entry->opdev);
+               __entry->refcbno = refcbno;
                __entry->len = len;
        ),
-       TP_printk("dev %d:%d agno 0x%x agbno 0x%x fsbcount 0x%x",
+       TP_printk("dev %d:%d opdev %d:%d agno 0x%x refcbno 0x%x fsbcount 0x%x",
                  MAJOR(__entry->dev), MINOR(__entry->dev),
+                 MAJOR(__entry->opdev), MINOR(__entry->opdev),
                  __entry->agno,
-                 __entry->agbno,
+                 __entry->refcbno,
                  __entry->len)
 );
 #define DEFINE_REFCOUNT_EVENT(name) \
 DEFINE_EVENT(xfs_refcount_class, name, \
-       TP_PROTO(struct xfs_btree_cur *cur, xfs_agblock_t agbno, \
+       TP_PROTO(struct xfs_btree_cur *cur, xfs_agblock_t refcbno, \
                xfs_extlen_t len), \
-       TP_ARGS(cur, agbno, len))
+       TP_ARGS(cur, refcbno, len))
 
 TRACE_DEFINE_ENUM(XFS_LOOKUP_EQi);
 TRACE_DEFINE_ENUM(XFS_LOOKUP_LEi);
 TRACE_DEFINE_ENUM(XFS_LOOKUP_GEi);
 TRACE_EVENT(xfs_refcount_lookup,
-       TP_PROTO(struct xfs_btree_cur *cur, xfs_agblock_t agbno,
+       TP_PROTO(struct xfs_btree_cur *cur, xfs_agblock_t refcbno,
                xfs_lookup_t dir),
-       TP_ARGS(cur, agbno, dir),
+       TP_ARGS(cur, refcbno, dir),
        TP_STRUCT__entry(
                __field(dev_t, dev)
+               __field(dev_t, opdev)
                __field(xfs_agnumber_t, agno)
-               __field(xfs_agblock_t, agbno)
+               __field(xfs_agblock_t, refcbno)
                __field(xfs_lookup_t, dir)
        ),
        TP_fast_assign(
                __entry->dev = cur->bc_mp->m_super->s_dev;
-               __entry->agno = cur->bc_group->xg_index;
-               __entry->agbno = agbno;
+               xfs_refcountbt_crack_agno_opdev(cur, &__entry->agno, &__entry->opdev);
+               __entry->refcbno = refcbno;
                __entry->dir = dir;
        ),
-       TP_printk("dev %d:%d agno 0x%x agbno 0x%x cmp %s(%d)",
+       TP_printk("dev %d:%d opdev %d:%d agno 0x%x refcbno 0x%x cmp %s(%d)",
                  MAJOR(__entry->dev), MINOR(__entry->dev),
+                 MAJOR(__entry->opdev), MINOR(__entry->opdev),
                  __entry->agno,
-                 __entry->agbno,
+                 __entry->refcbno,
                  __print_symbolic(__entry->dir, XFS_AG_BTREE_CMP_FORMAT_STR),
                  __entry->dir)
 )
        TP_ARGS(cur, irec),
        TP_STRUCT__entry(
                __field(dev_t, dev)
+               __field(dev_t, opdev)
                __field(xfs_agnumber_t, agno)
                __field(enum xfs_refc_domain, domain)
                __field(xfs_agblock_t, startblock)
        ),
        TP_fast_assign(
                __entry->dev = cur->bc_mp->m_super->s_dev;
-               __entry->agno = cur->bc_group->xg_index;
+               xfs_refcountbt_crack_agno_opdev(cur, &__entry->agno, &__entry->opdev);
                __entry->domain = irec->rc_domain;
                __entry->startblock = irec->rc_startblock;
                __entry->blockcount = irec->rc_blockcount;
                __entry->refcount = irec->rc_refcount;
        ),
-       TP_printk("dev %d:%d agno 0x%x dom %s agbno 0x%x fsbcount 0x%x refcount %u",
+       TP_printk("dev %d:%d opdev %d:%d agno 0x%x dom %s refcbno 0x%x fsbcount 0x%x refcount %u",
                  MAJOR(__entry->dev), MINOR(__entry->dev),
+                 MAJOR(__entry->opdev), MINOR(__entry->opdev),
                  __entry->agno,
                  __print_symbolic(__entry->domain, XFS_REFC_DOMAIN_STRINGS),
                  __entry->startblock,
 /* single-rcext and an agbno tracepoint class */
 DECLARE_EVENT_CLASS(xfs_refcount_extent_at_class,
        TP_PROTO(struct xfs_btree_cur *cur, struct xfs_refcount_irec *irec,
-                xfs_agblock_t agbno),
-       TP_ARGS(cur, irec, agbno),
+                xfs_agblock_t refcbno),
+       TP_ARGS(cur, irec, refcbno),
        TP_STRUCT__entry(
                __field(dev_t, dev)
+               __field(dev_t, opdev)
                __field(xfs_agnumber_t, agno)
                __field(enum xfs_refc_domain, domain)
                __field(xfs_agblock_t, startblock)
                __field(xfs_extlen_t, blockcount)
                __field(xfs_nlink_t, refcount)
-               __field(xfs_agblock_t, agbno)
+               __field(xfs_agblock_t, refcbno)
        ),
        TP_fast_assign(
                __entry->dev = cur->bc_mp->m_super->s_dev;
-               __entry->agno = cur->bc_group->xg_index;
+               xfs_refcountbt_crack_agno_opdev(cur, &__entry->agno, &__entry->opdev);
                __entry->domain = irec->rc_domain;
                __entry->startblock = irec->rc_startblock;
                __entry->blockcount = irec->rc_blockcount;
                __entry->refcount = irec->rc_refcount;
-               __entry->agbno = agbno;
+               __entry->refcbno = refcbno;
        ),
-       TP_printk("dev %d:%d agno 0x%x dom %s agbno 0x%x fsbcount 0x%x refcount %u @ agbno 0x%x",
+       TP_printk("dev %d:%d opdev %d:%d agno 0x%x dom %s refcbno 0x%x fsbcount 0x%x refcount %u @ refcbno 0x%x",
                  MAJOR(__entry->dev), MINOR(__entry->dev),
+                 MAJOR(__entry->opdev), MINOR(__entry->opdev),
                  __entry->agno,
                  __print_symbolic(__entry->domain, XFS_REFC_DOMAIN_STRINGS),
                  __entry->startblock,
                  __entry->blockcount,
                  __entry->refcount,
-                 __entry->agbno)
+                 __entry->refcbno)
 )
 
 #define DEFINE_REFCOUNT_EXTENT_AT_EVENT(name) \
 DEFINE_EVENT(xfs_refcount_extent_at_class, name, \
        TP_PROTO(struct xfs_btree_cur *cur, struct xfs_refcount_irec *irec, \
-                xfs_agblock_t agbno), \
-       TP_ARGS(cur, irec, agbno))
+                xfs_agblock_t refcbno), \
+       TP_ARGS(cur, irec, refcbno))
 
 /* double-rcext tracepoint class */
 DECLARE_EVENT_CLASS(xfs_refcount_double_extent_class,
        TP_PROTO(struct xfs_btree_cur *cur, struct xfs_refcount_irec *i1,
-               struct xfs_refcount_irec *i2),
+                struct xfs_refcount_irec *i2),
        TP_ARGS(cur, i1, i2),
        TP_STRUCT__entry(
                __field(dev_t, dev)
+               __field(dev_t, opdev)
                __field(xfs_agnumber_t, agno)
                __field(enum xfs_refc_domain, i1_domain)
                __field(xfs_agblock_t, i1_startblock)
        ),
        TP_fast_assign(
                __entry->dev = cur->bc_mp->m_super->s_dev;
-               __entry->agno = cur->bc_group->xg_index;
+               xfs_refcountbt_crack_agno_opdev(cur, &__entry->agno, &__entry->opdev);
                __entry->i1_domain = i1->rc_domain;
                __entry->i1_startblock = i1->rc_startblock;
                __entry->i1_blockcount = i1->rc_blockcount;
                __entry->i2_blockcount = i2->rc_blockcount;
                __entry->i2_refcount = i2->rc_refcount;
        ),
-       TP_printk("dev %d:%d agno 0x%x dom %s agbno 0x%x fsbcount 0x%x refcount %u -- "
-                 "dom %s agbno 0x%x fsbcount 0x%x refcount %u",
+       TP_printk("dev %d:%d opdev %d:%d agno 0x%x dom %s refcbno 0x%x fsbcount 0x%x refcount %u -- "
+                 "dom %s refcbno 0x%x fsbcount 0x%x refcount %u",
                  MAJOR(__entry->dev), MINOR(__entry->dev),
+                 MAJOR(__entry->opdev), MINOR(__entry->opdev),
                  __entry->agno,
                  __print_symbolic(__entry->i1_domain, XFS_REFC_DOMAIN_STRINGS),
                  __entry->i1_startblock,
 /* double-rcext and an agbno tracepoint class */
 DECLARE_EVENT_CLASS(xfs_refcount_double_extent_at_class,
        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),
+                struct xfs_refcount_irec *i2, xfs_agblock_t refcbno),
+       TP_ARGS(cur, i1, i2, refcbno),
        TP_STRUCT__entry(
                __field(dev_t, dev)
+               __field(dev_t, opdev)
                __field(xfs_agnumber_t, agno)
                __field(enum xfs_refc_domain, i1_domain)
                __field(xfs_agblock_t, i1_startblock)
                __field(xfs_agblock_t, i2_startblock)
                __field(xfs_extlen_t, i2_blockcount)
                __field(xfs_nlink_t, i2_refcount)
-               __field(xfs_agblock_t, agbno)
+               __field(xfs_agblock_t, refcbno)
        ),
        TP_fast_assign(
                __entry->dev = cur->bc_mp->m_super->s_dev;
-               __entry->agno = cur->bc_group->xg_index;
+               xfs_refcountbt_crack_agno_opdev(cur, &__entry->agno, &__entry->opdev);
                __entry->i1_domain = i1->rc_domain;
                __entry->i1_startblock = i1->rc_startblock;
                __entry->i1_blockcount = i1->rc_blockcount;
                __entry->i2_startblock = i2->rc_startblock;
                __entry->i2_blockcount = i2->rc_blockcount;
                __entry->i2_refcount = i2->rc_refcount;
-               __entry->agbno = agbno;
+               __entry->refcbno = refcbno;
        ),
-       TP_printk("dev %d:%d agno 0x%x dom %s agbno 0x%x fsbcount 0x%x refcount %u -- "
-                 "dom %s agbno 0x%x fsbcount 0x%x refcount %u @ agbno 0x%x",
+       TP_printk("dev %d:%d opdev %d:%d agno 0x%x dom %s refcbno 0x%x fsbcount 0x%x refcount %u -- "
+                 "dom %s refcbno 0x%x fsbcount 0x%x refcount %u @ refcbno 0x%x",
                  MAJOR(__entry->dev), MINOR(__entry->dev),
+                 MAJOR(__entry->opdev), MINOR(__entry->opdev),
                  __entry->agno,
                  __print_symbolic(__entry->i1_domain, XFS_REFC_DOMAIN_STRINGS),
                  __entry->i1_startblock,
                  __entry->i2_startblock,
                  __entry->i2_blockcount,
                  __entry->i2_refcount,
-                 __entry->agbno)
+                 __entry->refcbno)
 )
 
 #define DEFINE_REFCOUNT_DOUBLE_EXTENT_AT_EVENT(name) \
 DEFINE_EVENT(xfs_refcount_double_extent_at_class, name, \
        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))
+               struct xfs_refcount_irec *i2, xfs_agblock_t refcbno), \
+       TP_ARGS(cur, i1, i2, refcbno))
 
 /* triple-rcext tracepoint class */
 DECLARE_EVENT_CLASS(xfs_refcount_triple_extent_class,
        TP_ARGS(cur, i1, i2, i3),
        TP_STRUCT__entry(
                __field(dev_t, dev)
+               __field(dev_t, opdev)
                __field(xfs_agnumber_t, agno)
                __field(enum xfs_refc_domain, i1_domain)
                __field(xfs_agblock_t, i1_startblock)
        ),
        TP_fast_assign(
                __entry->dev = cur->bc_mp->m_super->s_dev;
-               __entry->agno = cur->bc_group->xg_index;
+               xfs_refcountbt_crack_agno_opdev(cur, &__entry->agno, &__entry->opdev);
                __entry->i1_domain = i1->rc_domain;
                __entry->i1_startblock = i1->rc_startblock;
                __entry->i1_blockcount = i1->rc_blockcount;
                __entry->i3_blockcount = i3->rc_blockcount;
                __entry->i3_refcount = i3->rc_refcount;
        ),
-       TP_printk("dev %d:%d agno 0x%x dom %s agbno 0x%x fsbcount 0x%x refcount %u -- "
-                 "dom %s agbno 0x%x fsbcount 0x%x refcount %u -- "
-                 "dom %s agbno 0x%x fsbcount 0x%x refcount %u",
+       TP_printk("dev %d:%d opdev %d:%d agno 0x%x dom %s refcbno 0x%x fsbcount 0x%x refcount %u -- "
+                 "dom %s refcbno 0x%x fsbcount 0x%x refcount %u -- "
+                 "dom %s refcbno 0x%x fsbcount 0x%x refcount %u",
                  MAJOR(__entry->dev), MINOR(__entry->dev),
+                 MAJOR(__entry->opdev), MINOR(__entry->opdev),
                  __entry->agno,
                  __print_symbolic(__entry->i1_domain, XFS_REFC_DOMAIN_STRINGS),
                  __entry->i1_startblock,
                __field(dev_t, dev)
                __field(xfs_agnumber_t, agno)
                __field(int, op)
-               __field(xfs_agblock_t, agbno)
+               __field(xfs_agblock_t, refcbno)
                __field(xfs_extlen_t, len)
        ),
        TP_fast_assign(
                __entry->dev = mp->m_super->s_dev;
                __entry->agno = XFS_FSB_TO_AGNO(mp, refc->ri_startblock);
                __entry->op = refc->ri_type;
-               __entry->agbno = XFS_FSB_TO_AGBNO(mp, refc->ri_startblock);
+               __entry->refcbno = XFS_FSB_TO_AGBNO(mp, refc->ri_startblock);
                __entry->len = refc->ri_blockcount;
        ),
-       TP_printk("dev %d:%d op %s agno 0x%x agbno 0x%x fsbcount 0x%x",
+       TP_printk("dev %d:%d op %s agno 0x%x refcbno 0x%x fsbcount 0x%x",
                  MAJOR(__entry->dev), MINOR(__entry->dev),
                  __print_symbolic(__entry->op, XFS_REFCOUNT_INTENT_STRINGS),
                  __entry->agno,
-                 __entry->agbno,
+                 __entry->refcbno,
                  __entry->len)
 );
 #define DEFINE_REFCOUNT_DEFERRED_EVENT(name) \