The page reference count tracepoints currently look like this: __entry->pfn = page_to_pfn(page); __entry->flags = page->flags; __entry->count = page_ref_count(page); __entry->mapcount = atomic_read(&page->_mapcount); __entry->mapping = page->mapping; __entry->mt = get_pageblock_migratetype(page); TP_printk("pfn=0x%lx flags=%s count=%d mapcount=%d mapping=%p mt=%d val=%d", Soon, pages will not have a ->mapping, nor a ->mapcount [1]. But they will still have a refcount, at least for now. put_page() will move out of line and look something like this: void put_page(struct page *page) { unsigned long memdesc = page->memdesc; if (memdesc_is_folio(memdesc)) return folio_put(memdesc_folio(memdesc)); BUG_ON(memdesc_is_slab(memdesc)); ... handle other memdesc types here ... if (memdesc_is_compound_head(memdesc)) page = memdesc_head_page(memdesc); if (put_page_testzero(page)) __put_page(page); } What I'm thinking is: - Define a set of folio_ref_* tracepoints which dump exactly the same info as page_ref does today - Remove mapping & mapcount from page_ref_* functions. Other ideas? I don't use these tracepoints myself; they generate far too much data to be useful to me. [1] In case you missed it, https://lore.kernel.org/linux-mm/Z37pxbkHPbLYnDKn@xxxxxxxxxxxxxxxxxxxx/