On 8/4/20 11:48 AM, Matthew Wilcox wrote:
On Tue, Aug 04, 2020 at 11:39:43AM -0700, John Hubbard wrote:
+static inline int __compound_mapcount(struct page *page)
+{
+ page = compound_head(page);
+ return atomic_read(compound_mapcount_ptr(page)) + 1;
+}
I'd suggest instead:
static inline int head_mapcount(struct page *head)
{
return atomic_read(compound_mapcount_ptr(head)) + 1;
}
+static inline int dump_page_compound_mapcount(struct page *page)
+{
+ if (WARN_ON_ONCE(!PageCompound(page)))
+ return 0;
+ return __compound_mapcount(page);
}
And just dropping this ... it shouldn't be used outside mm/debug.c anyway.
Yes, that's cleaner. I'll send a v2 that is not a reply, so that Andrew can
spot it more easily. OK to add your "Suggested-by:" to that?
Thinking about it, we'll get the hint later that this is not to be trusted
when the flags from the page do not include 'head'.
Good point. I think this will work out pretty well, then.
thanks,
--
John Hubbard
NVIDIA