xfs: report refcount domain in tracepoints

Now that we've broken out the startblock and shared/cow domain in the
incore refcount extent record structure, update the tracepoints to
report the domain.

Signed-off-by: Darrick J. Wong <djwong@kernel.org>
Reviewed-by: Dave Chinner <dchinner@redhat.com>
This commit is contained in:
Darrick J. Wong 2022-10-26 14:23:58 -07:00
parent 9a50ee4f8d
commit 571423a162
2 changed files with 43 additions and 9 deletions

View File

@ -171,6 +171,10 @@ enum xfs_refc_domain {
XFS_REFC_DOMAIN_COW, XFS_REFC_DOMAIN_COW,
}; };
#define XFS_REFC_DOMAIN_STRINGS \
{ XFS_REFC_DOMAIN_SHARED, "shared" }, \
{ XFS_REFC_DOMAIN_COW, "cow" }
struct xfs_refcount_irec { struct xfs_refcount_irec {
xfs_agblock_t rc_startblock; /* starting block number */ xfs_agblock_t rc_startblock; /* starting block number */
xfs_extlen_t rc_blockcount; /* count of free blocks */ xfs_extlen_t rc_blockcount; /* count of free blocks */

View File

@ -799,6 +799,9 @@ TRACE_DEFINE_ENUM(PE_SIZE_PTE);
TRACE_DEFINE_ENUM(PE_SIZE_PMD); TRACE_DEFINE_ENUM(PE_SIZE_PMD);
TRACE_DEFINE_ENUM(PE_SIZE_PUD); 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, TRACE_EVENT(xfs_filemap_fault,
TP_PROTO(struct xfs_inode *ip, enum page_entry_size pe_size, TP_PROTO(struct xfs_inode *ip, enum page_entry_size pe_size,
bool write_fault), bool write_fault),
@ -2925,6 +2928,7 @@ DECLARE_EVENT_CLASS(xfs_refcount_extent_class,
TP_STRUCT__entry( TP_STRUCT__entry(
__field(dev_t, dev) __field(dev_t, dev)
__field(xfs_agnumber_t, agno) __field(xfs_agnumber_t, agno)
__field(enum xfs_refc_domain, domain)
__field(xfs_agblock_t, startblock) __field(xfs_agblock_t, startblock)
__field(xfs_extlen_t, blockcount) __field(xfs_extlen_t, blockcount)
__field(xfs_nlink_t, refcount) __field(xfs_nlink_t, refcount)
@ -2932,13 +2936,15 @@ DECLARE_EVENT_CLASS(xfs_refcount_extent_class,
TP_fast_assign( TP_fast_assign(
__entry->dev = mp->m_super->s_dev; __entry->dev = mp->m_super->s_dev;
__entry->agno = agno; __entry->agno = agno;
__entry->domain = irec->rc_domain;
__entry->startblock = irec->rc_startblock; __entry->startblock = irec->rc_startblock;
__entry->blockcount = irec->rc_blockcount; __entry->blockcount = irec->rc_blockcount;
__entry->refcount = irec->rc_refcount; __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), MAJOR(__entry->dev), MINOR(__entry->dev),
__entry->agno, __entry->agno,
__print_symbolic(__entry->domain, XFS_REFC_DOMAIN_STRINGS),
__entry->startblock, __entry->startblock,
__entry->blockcount, __entry->blockcount,
__entry->refcount) __entry->refcount)
@ -2958,6 +2964,7 @@ DECLARE_EVENT_CLASS(xfs_refcount_extent_at_class,
TP_STRUCT__entry( TP_STRUCT__entry(
__field(dev_t, dev) __field(dev_t, dev)
__field(xfs_agnumber_t, agno) __field(xfs_agnumber_t, agno)
__field(enum xfs_refc_domain, domain)
__field(xfs_agblock_t, startblock) __field(xfs_agblock_t, startblock)
__field(xfs_extlen_t, blockcount) __field(xfs_extlen_t, blockcount)
__field(xfs_nlink_t, refcount) __field(xfs_nlink_t, refcount)
@ -2966,14 +2973,16 @@ DECLARE_EVENT_CLASS(xfs_refcount_extent_at_class,
TP_fast_assign( TP_fast_assign(
__entry->dev = mp->m_super->s_dev; __entry->dev = mp->m_super->s_dev;
__entry->agno = agno; __entry->agno = agno;
__entry->domain = irec->rc_domain;
__entry->startblock = irec->rc_startblock; __entry->startblock = irec->rc_startblock;
__entry->blockcount = irec->rc_blockcount; __entry->blockcount = irec->rc_blockcount;
__entry->refcount = irec->rc_refcount; __entry->refcount = irec->rc_refcount;
__entry->agbno = agbno; __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), MAJOR(__entry->dev), MINOR(__entry->dev),
__entry->agno, __entry->agno,
__print_symbolic(__entry->domain, XFS_REFC_DOMAIN_STRINGS),
__entry->startblock, __entry->startblock,
__entry->blockcount, __entry->blockcount,
__entry->refcount, __entry->refcount,
@ -2994,9 +3003,11 @@ DECLARE_EVENT_CLASS(xfs_refcount_double_extent_class,
TP_STRUCT__entry( TP_STRUCT__entry(
__field(dev_t, dev) __field(dev_t, dev)
__field(xfs_agnumber_t, agno) __field(xfs_agnumber_t, agno)
__field(enum xfs_refc_domain, i1_domain)
__field(xfs_agblock_t, i1_startblock) __field(xfs_agblock_t, i1_startblock)
__field(xfs_extlen_t, i1_blockcount) __field(xfs_extlen_t, i1_blockcount)
__field(xfs_nlink_t, i1_refcount) __field(xfs_nlink_t, i1_refcount)
__field(enum xfs_refc_domain, i2_domain)
__field(xfs_agblock_t, i2_startblock) __field(xfs_agblock_t, i2_startblock)
__field(xfs_extlen_t, i2_blockcount) __field(xfs_extlen_t, i2_blockcount)
__field(xfs_nlink_t, i2_refcount) __field(xfs_nlink_t, i2_refcount)
@ -3004,20 +3015,24 @@ DECLARE_EVENT_CLASS(xfs_refcount_double_extent_class,
TP_fast_assign( TP_fast_assign(
__entry->dev = mp->m_super->s_dev; __entry->dev = mp->m_super->s_dev;
__entry->agno = agno; __entry->agno = agno;
__entry->i1_domain = i1->rc_domain;
__entry->i1_startblock = i1->rc_startblock; __entry->i1_startblock = i1->rc_startblock;
__entry->i1_blockcount = i1->rc_blockcount; __entry->i1_blockcount = i1->rc_blockcount;
__entry->i1_refcount = i1->rc_refcount; __entry->i1_refcount = i1->rc_refcount;
__entry->i2_domain = i2->rc_domain;
__entry->i2_startblock = i2->rc_startblock; __entry->i2_startblock = i2->rc_startblock;
__entry->i2_blockcount = i2->rc_blockcount; __entry->i2_blockcount = i2->rc_blockcount;
__entry->i2_refcount = i2->rc_refcount; __entry->i2_refcount = i2->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 -- "
"agbno 0x%x fsbcount 0x%x refcount %u", "dom %s agbno 0x%x fsbcount 0x%x refcount %u",
MAJOR(__entry->dev), MINOR(__entry->dev), MAJOR(__entry->dev), MINOR(__entry->dev),
__entry->agno, __entry->agno,
__print_symbolic(__entry->i1_domain, XFS_REFC_DOMAIN_STRINGS),
__entry->i1_startblock, __entry->i1_startblock,
__entry->i1_blockcount, __entry->i1_blockcount,
__entry->i1_refcount, __entry->i1_refcount,
__print_symbolic(__entry->i2_domain, XFS_REFC_DOMAIN_STRINGS),
__entry->i2_startblock, __entry->i2_startblock,
__entry->i2_blockcount, __entry->i2_blockcount,
__entry->i2_refcount) __entry->i2_refcount)
@ -3038,9 +3053,11 @@ DECLARE_EVENT_CLASS(xfs_refcount_double_extent_at_class,
TP_STRUCT__entry( TP_STRUCT__entry(
__field(dev_t, dev) __field(dev_t, dev)
__field(xfs_agnumber_t, agno) __field(xfs_agnumber_t, agno)
__field(enum xfs_refc_domain, i1_domain)
__field(xfs_agblock_t, i1_startblock) __field(xfs_agblock_t, i1_startblock)
__field(xfs_extlen_t, i1_blockcount) __field(xfs_extlen_t, i1_blockcount)
__field(xfs_nlink_t, i1_refcount) __field(xfs_nlink_t, i1_refcount)
__field(enum xfs_refc_domain, i2_domain)
__field(xfs_agblock_t, i2_startblock) __field(xfs_agblock_t, i2_startblock)
__field(xfs_extlen_t, i2_blockcount) __field(xfs_extlen_t, i2_blockcount)
__field(xfs_nlink_t, i2_refcount) __field(xfs_nlink_t, i2_refcount)
@ -3049,21 +3066,25 @@ DECLARE_EVENT_CLASS(xfs_refcount_double_extent_at_class,
TP_fast_assign( TP_fast_assign(
__entry->dev = mp->m_super->s_dev; __entry->dev = mp->m_super->s_dev;
__entry->agno = agno; __entry->agno = agno;
__entry->i1_domain = i1->rc_domain;
__entry->i1_startblock = i1->rc_startblock; __entry->i1_startblock = i1->rc_startblock;
__entry->i1_blockcount = i1->rc_blockcount; __entry->i1_blockcount = i1->rc_blockcount;
__entry->i1_refcount = i1->rc_refcount; __entry->i1_refcount = i1->rc_refcount;
__entry->i2_domain = i2->rc_domain;
__entry->i2_startblock = i2->rc_startblock; __entry->i2_startblock = i2->rc_startblock;
__entry->i2_blockcount = i2->rc_blockcount; __entry->i2_blockcount = i2->rc_blockcount;
__entry->i2_refcount = i2->rc_refcount; __entry->i2_refcount = i2->rc_refcount;
__entry->agbno = agbno; __entry->agbno = agbno;
), ),
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 -- "
"agbno 0x%x fsbcount 0x%x refcount %u @ agbno 0x%x", "dom %s agbno 0x%x fsbcount 0x%x refcount %u @ agbno 0x%x",
MAJOR(__entry->dev), MINOR(__entry->dev), MAJOR(__entry->dev), MINOR(__entry->dev),
__entry->agno, __entry->agno,
__print_symbolic(__entry->i1_domain, XFS_REFC_DOMAIN_STRINGS),
__entry->i1_startblock, __entry->i1_startblock,
__entry->i1_blockcount, __entry->i1_blockcount,
__entry->i1_refcount, __entry->i1_refcount,
__print_symbolic(__entry->i2_domain, XFS_REFC_DOMAIN_STRINGS),
__entry->i2_startblock, __entry->i2_startblock,
__entry->i2_blockcount, __entry->i2_blockcount,
__entry->i2_refcount, __entry->i2_refcount,
@ -3086,12 +3107,15 @@ DECLARE_EVENT_CLASS(xfs_refcount_triple_extent_class,
TP_STRUCT__entry( TP_STRUCT__entry(
__field(dev_t, dev) __field(dev_t, dev)
__field(xfs_agnumber_t, agno) __field(xfs_agnumber_t, agno)
__field(enum xfs_refc_domain, i1_domain)
__field(xfs_agblock_t, i1_startblock) __field(xfs_agblock_t, i1_startblock)
__field(xfs_extlen_t, i1_blockcount) __field(xfs_extlen_t, i1_blockcount)
__field(xfs_nlink_t, i1_refcount) __field(xfs_nlink_t, i1_refcount)
__field(enum xfs_refc_domain, i2_domain)
__field(xfs_agblock_t, i2_startblock) __field(xfs_agblock_t, i2_startblock)
__field(xfs_extlen_t, i2_blockcount) __field(xfs_extlen_t, i2_blockcount)
__field(xfs_nlink_t, i2_refcount) __field(xfs_nlink_t, i2_refcount)
__field(enum xfs_refc_domain, i3_domain)
__field(xfs_agblock_t, i3_startblock) __field(xfs_agblock_t, i3_startblock)
__field(xfs_extlen_t, i3_blockcount) __field(xfs_extlen_t, i3_blockcount)
__field(xfs_nlink_t, i3_refcount) __field(xfs_nlink_t, i3_refcount)
@ -3099,27 +3123,33 @@ DECLARE_EVENT_CLASS(xfs_refcount_triple_extent_class,
TP_fast_assign( TP_fast_assign(
__entry->dev = mp->m_super->s_dev; __entry->dev = mp->m_super->s_dev;
__entry->agno = agno; __entry->agno = agno;
__entry->i1_domain = i1->rc_domain;
__entry->i1_startblock = i1->rc_startblock; __entry->i1_startblock = i1->rc_startblock;
__entry->i1_blockcount = i1->rc_blockcount; __entry->i1_blockcount = i1->rc_blockcount;
__entry->i1_refcount = i1->rc_refcount; __entry->i1_refcount = i1->rc_refcount;
__entry->i2_domain = i2->rc_domain;
__entry->i2_startblock = i2->rc_startblock; __entry->i2_startblock = i2->rc_startblock;
__entry->i2_blockcount = i2->rc_blockcount; __entry->i2_blockcount = i2->rc_blockcount;
__entry->i2_refcount = i2->rc_refcount; __entry->i2_refcount = i2->rc_refcount;
__entry->i3_domain = i3->rc_domain;
__entry->i3_startblock = i3->rc_startblock; __entry->i3_startblock = i3->rc_startblock;
__entry->i3_blockcount = i3->rc_blockcount; __entry->i3_blockcount = i3->rc_blockcount;
__entry->i3_refcount = i3->rc_refcount; __entry->i3_refcount = i3->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 -- "
"agbno 0x%x fsbcount 0x%x refcount %u -- " "dom %s agbno 0x%x fsbcount 0x%x refcount %u -- "
"agbno 0x%x fsbcount 0x%x refcount %u", "dom %s agbno 0x%x fsbcount 0x%x refcount %u",
MAJOR(__entry->dev), MINOR(__entry->dev), MAJOR(__entry->dev), MINOR(__entry->dev),
__entry->agno, __entry->agno,
__print_symbolic(__entry->i1_domain, XFS_REFC_DOMAIN_STRINGS),
__entry->i1_startblock, __entry->i1_startblock,
__entry->i1_blockcount, __entry->i1_blockcount,
__entry->i1_refcount, __entry->i1_refcount,
__print_symbolic(__entry->i2_domain, XFS_REFC_DOMAIN_STRINGS),
__entry->i2_startblock, __entry->i2_startblock,
__entry->i2_blockcount, __entry->i2_blockcount,
__entry->i2_refcount, __entry->i2_refcount,
__print_symbolic(__entry->i3_domain, XFS_REFC_DOMAIN_STRINGS),
__entry->i3_startblock, __entry->i3_startblock,
__entry->i3_blockcount, __entry->i3_blockcount,
__entry->i3_refcount) __entry->i3_refcount)