TRACE_DEFINE_ENUM(PE_SIZE_PMD);
 TRACE_DEFINE_ENUM(PE_SIZE_PUD);
 
+TRACE_DEFINE_ENUM(XFS_REFC_DOMAIN_SHARED);
+TRACE_DEFINE_ENUM(XFS_REFC_DOMAIN_COW);
+
 TRACE_EVENT(xfs_filemap_fault,
        TP_PROTO(struct xfs_inode *ip, enum page_entry_size pe_size,
                 bool write_fault),
        TP_STRUCT__entry(
                __field(dev_t, dev)
                __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)
        TP_fast_assign(
                __entry->dev = mp->m_super->s_dev;
                __entry->agno = agno;
+               __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 agbno 0x%x fsbcount 0x%x refcount %u",
+       TP_printk("dev %d:%d agno 0x%x dom %s agbno 0x%x fsbcount 0x%x refcount %u",
                  MAJOR(__entry->dev), MINOR(__entry->dev),
                  __entry->agno,
+                 __print_symbolic(__entry->domain, XFS_REFC_DOMAIN_STRINGS),
                  __entry->startblock,
                  __entry->blockcount,
                  __entry->refcount)
        TP_STRUCT__entry(
                __field(dev_t, dev)
                __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)
        TP_fast_assign(
                __entry->dev = mp->m_super->s_dev;
                __entry->agno = agno;
+               __entry->domain = irec->rc_domain;
                __entry->startblock = irec->rc_startblock;
                __entry->blockcount = irec->rc_blockcount;
                __entry->refcount = irec->rc_refcount;
                __entry->agbno = agbno;
        ),
-       TP_printk("dev %d:%d agno 0x%x agbno 0x%x fsbcount 0x%x refcount %u @ agbno 0x%x",
+       TP_printk("dev %d:%d agno 0x%x dom %s agbno 0x%x fsbcount 0x%x refcount %u @ agbno 0x%x",
                  MAJOR(__entry->dev), MINOR(__entry->dev),
                  __entry->agno,
+                 __print_symbolic(__entry->domain, XFS_REFC_DOMAIN_STRINGS),
                  __entry->startblock,
                  __entry->blockcount,
                  __entry->refcount,
        TP_STRUCT__entry(
                __field(dev_t, dev)
                __field(xfs_agnumber_t, agno)
+               __field(enum xfs_refc_domain, i1_domain)
                __field(xfs_agblock_t, i1_startblock)
                __field(xfs_extlen_t, i1_blockcount)
                __field(xfs_nlink_t, i1_refcount)
+               __field(enum xfs_refc_domain, i2_domain)
                __field(xfs_agblock_t, i2_startblock)
                __field(xfs_extlen_t, i2_blockcount)
                __field(xfs_nlink_t, i2_refcount)
        TP_fast_assign(
                __entry->dev = mp->m_super->s_dev;
                __entry->agno = agno;
+               __entry->i1_domain = i1->rc_domain;
                __entry->i1_startblock = i1->rc_startblock;
                __entry->i1_blockcount = i1->rc_blockcount;
                __entry->i1_refcount = i1->rc_refcount;
+               __entry->i2_domain = i2->rc_domain;
                __entry->i2_startblock = i2->rc_startblock;
                __entry->i2_blockcount = i2->rc_blockcount;
                __entry->i2_refcount = i2->rc_refcount;
        ),
-       TP_printk("dev %d:%d agno 0x%x agbno 0x%x fsbcount 0x%x refcount %u -- "
-                 "agbno 0x%x fsbcount 0x%x refcount %u",
+       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",
                  MAJOR(__entry->dev), MINOR(__entry->dev),
                  __entry->agno,
+                 __print_symbolic(__entry->i1_domain, XFS_REFC_DOMAIN_STRINGS),
                  __entry->i1_startblock,
                  __entry->i1_blockcount,
                  __entry->i1_refcount,
+                 __print_symbolic(__entry->i2_domain, XFS_REFC_DOMAIN_STRINGS),
                  __entry->i2_startblock,
                  __entry->i2_blockcount,
                  __entry->i2_refcount)
        TP_STRUCT__entry(
                __field(dev_t, dev)
                __field(xfs_agnumber_t, agno)
+               __field(enum xfs_refc_domain, i1_domain)
                __field(xfs_agblock_t, i1_startblock)
                __field(xfs_extlen_t, i1_blockcount)
                __field(xfs_nlink_t, i1_refcount)
+               __field(enum xfs_refc_domain, i2_domain)
                __field(xfs_agblock_t, i2_startblock)
                __field(xfs_extlen_t, i2_blockcount)
                __field(xfs_nlink_t, i2_refcount)
        TP_fast_assign(
                __entry->dev = mp->m_super->s_dev;
                __entry->agno = agno;
+               __entry->i1_domain = i1->rc_domain;
                __entry->i1_startblock = i1->rc_startblock;
                __entry->i1_blockcount = i1->rc_blockcount;
                __entry->i1_refcount = i1->rc_refcount;
+               __entry->i2_domain = i2->rc_domain;
                __entry->i2_startblock = i2->rc_startblock;
                __entry->i2_blockcount = i2->rc_blockcount;
                __entry->i2_refcount = i2->rc_refcount;
                __entry->agbno = agbno;
        ),
-       TP_printk("dev %d:%d agno 0x%x agbno 0x%x fsbcount 0x%x refcount %u -- "
-                 "agbno 0x%x fsbcount 0x%x refcount %u @ agbno 0x%x",
+       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",
                  MAJOR(__entry->dev), MINOR(__entry->dev),
                  __entry->agno,
+                 __print_symbolic(__entry->i1_domain, XFS_REFC_DOMAIN_STRINGS),
                  __entry->i1_startblock,
                  __entry->i1_blockcount,
                  __entry->i1_refcount,
+                 __print_symbolic(__entry->i2_domain, XFS_REFC_DOMAIN_STRINGS),
                  __entry->i2_startblock,
                  __entry->i2_blockcount,
                  __entry->i2_refcount,
        TP_STRUCT__entry(
                __field(dev_t, dev)
                __field(xfs_agnumber_t, agno)
+               __field(enum xfs_refc_domain, i1_domain)
                __field(xfs_agblock_t, i1_startblock)
                __field(xfs_extlen_t, i1_blockcount)
                __field(xfs_nlink_t, i1_refcount)
+               __field(enum xfs_refc_domain, i2_domain)
                __field(xfs_agblock_t, i2_startblock)
                __field(xfs_extlen_t, i2_blockcount)
                __field(xfs_nlink_t, i2_refcount)
+               __field(enum xfs_refc_domain, i3_domain)
                __field(xfs_agblock_t, i3_startblock)
                __field(xfs_extlen_t, i3_blockcount)
                __field(xfs_nlink_t, i3_refcount)
        TP_fast_assign(
                __entry->dev = mp->m_super->s_dev;
                __entry->agno = agno;
+               __entry->i1_domain = i1->rc_domain;
                __entry->i1_startblock = i1->rc_startblock;
                __entry->i1_blockcount = i1->rc_blockcount;
                __entry->i1_refcount = i1->rc_refcount;
+               __entry->i2_domain = i2->rc_domain;
                __entry->i2_startblock = i2->rc_startblock;
                __entry->i2_blockcount = i2->rc_blockcount;
                __entry->i2_refcount = i2->rc_refcount;
+               __entry->i3_domain = i3->rc_domain;
                __entry->i3_startblock = i3->rc_startblock;
                __entry->i3_blockcount = i3->rc_blockcount;
                __entry->i3_refcount = i3->rc_refcount;
        ),
-       TP_printk("dev %d:%d agno 0x%x agbno 0x%x fsbcount 0x%x refcount %u -- "
-                 "agbno 0x%x fsbcount 0x%x refcount %u -- "
-                 "agbno 0x%x fsbcount 0x%x refcount %u",
+       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",
                  MAJOR(__entry->dev), MINOR(__entry->dev),
                  __entry->agno,
+                 __print_symbolic(__entry->i1_domain, XFS_REFC_DOMAIN_STRINGS),
                  __entry->i1_startblock,
                  __entry->i1_blockcount,
                  __entry->i1_refcount,
+                 __print_symbolic(__entry->i2_domain, XFS_REFC_DOMAIN_STRINGS),
                  __entry->i2_startblock,
                  __entry->i2_blockcount,
                  __entry->i2_refcount,
+                 __print_symbolic(__entry->i3_domain, XFS_REFC_DOMAIN_STRINGS),
                  __entry->i3_startblock,
                  __entry->i3_blockcount,
                  __entry->i3_refcount)