On Tue, Aug 04, 2020 at 12:17:34PM -0700, John Hubbard wrote: > 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? Of course! Thanks! > > 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