]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
trace/events/page_ref: trace the raw page mapcount value
authorDavid Hildenbrand <david@redhat.com>
Tue, 9 Apr 2024 19:22:58 +0000 (21:22 +0200)
committerAndrew Morton <akpm@linux-foundation.org>
Mon, 6 May 2024 00:53:31 +0000 (17:53 -0700)
We want to limit the use of page_mapcount() to the places where it is
absolutely necessary.  We already trace raw page->refcount, raw
page->flags and raw page->mapping, and don't involve any folios.  Let's
also trace the raw mapcount value that does not consider the entire
mapcount of large folios, and we don't add "1" to it.

When dealing with typed folios, this makes a lot more sense.  ...  and
it's for debugging purposes only either way.

Link: https://lkml.kernel.org/r/20240409192301.907377-16-david@redhat.com
Signed-off-by: David Hildenbrand <david@redhat.com>
Cc: Chris Zankel <chris@zankel.net>
Cc: Hugh Dickins <hughd@google.com>
Cc: John Paul Adrian Glaubitz <glaubitz@physik.fu-berlin.de>
Cc: Jonathan Corbet <corbet@lwn.net>
Cc: Matthew Wilcox (Oracle) <willy@infradead.org>
Cc: Max Filippov <jcmvbkbc@gmail.com>
Cc: Miaohe Lin <linmiaohe@huawei.com>
Cc: Muchun Song <muchun.song@linux.dev>
Cc: Naoya Horiguchi <nao.horiguchi@gmail.com>
Cc: Peter Xu <peterx@redhat.com>
Cc: Richard Chang <richardycc@google.com>
Cc: Rich Felker <dalias@libc.org>
Cc: Ryan Roberts <ryan.roberts@arm.com>
Cc: Yang Shi <shy828301@gmail.com>
Cc: Yin Fengwei <fengwei.yin@intel.com>
Cc: Yoshinori Sato <ysato@users.sourceforge.jp>
Cc: Zi Yan <ziy@nvidia.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
include/trace/events/page_ref.h

index 8a99c1cd417b81cdd3cc52ca076f212265e2be2f..fe33a255b7d093aa46b7b0e3cd301475d298275e 100644 (file)
@@ -30,7 +30,7 @@ DECLARE_EVENT_CLASS(page_ref_mod_template,
                __entry->pfn = page_to_pfn(page);
                __entry->flags = page->flags;
                __entry->count = page_ref_count(page);
-               __entry->mapcount = page_mapcount(page);
+               __entry->mapcount = atomic_read(&page->_mapcount);
                __entry->mapping = page->mapping;
                __entry->mt = get_pageblock_migratetype(page);
                __entry->val = v;
@@ -79,7 +79,7 @@ DECLARE_EVENT_CLASS(page_ref_mod_and_test_template,
                __entry->pfn = page_to_pfn(page);
                __entry->flags = page->flags;
                __entry->count = page_ref_count(page);
-               __entry->mapcount = page_mapcount(page);
+               __entry->mapcount = atomic_read(&page->_mapcount);
                __entry->mapping = page->mapping;
                __entry->mt = get_pageblock_migratetype(page);
                __entry->val = v;