Commit 74e8ee47 authored by Matthew Wilcox (Oracle)'s avatar Matthew Wilcox (Oracle)
Browse files

mm: Turn head_compound_mapcount() into folio_entire_mapcount()



Adjust documentation to be more clear.

Signed-off-by: default avatarMatthew Wilcox (Oracle) <willy@infradead.org>
Reviewed-by: default avatarChristoph Hellwig <hch@lst.de>
parent e20c41b1
Loading
Loading
Loading
Loading
+11 −6
Original line number Diff line number Diff line
@@ -776,21 +776,26 @@ static inline int is_vmalloc_or_module_addr(const void *x)
}
#endif

static inline int head_compound_mapcount(struct page *head)
/*
 * How many times the entire folio is mapped as a single unit (eg by a
 * PMD or PUD entry).  This is probably not what you want, except for
 * debugging purposes; look at folio_mapcount() or page_mapcount()
 * instead.
 */
static inline int folio_entire_mapcount(struct folio *folio)
{
	return atomic_read(compound_mapcount_ptr(head)) + 1;
	VM_BUG_ON_FOLIO(!folio_test_large(folio), folio);
	return atomic_read(folio_mapcount_ptr(folio)) + 1;
}

/*
 * Mapcount of compound page as a whole, does not include mapped sub-pages.
 *
 * Must be called only for compound pages or any their tail sub-pages.
 * Must be called only for compound pages.
 */
static inline int compound_mapcount(struct page *page)
{
	VM_BUG_ON_PAGE(!PageCompound(page), page);
	page = compound_head(page);
	return head_compound_mapcount(page);
	return folio_entire_mapcount(page_folio(page));
}

/*
+4 −2
Original line number Diff line number Diff line
@@ -48,7 +48,8 @@ const struct trace_print_flags vmaflag_names[] = {

static void __dump_page(struct page *page)
{
	struct page *head = compound_head(page);
	struct folio *folio = page_folio(page);
	struct page *head = &folio->page;
	struct address_space *mapping;
	bool compound = PageCompound(page);
	/*
@@ -76,6 +77,7 @@ static void __dump_page(struct page *page)
		else
			mapping = (void *)(tmp & ~PAGE_MAPPING_FLAGS);
		head = page;
		folio = (struct folio *)page;
		compound = false;
	} else {
		mapping = page_mapping(page);
@@ -94,7 +96,7 @@ static void __dump_page(struct page *page)
	if (compound) {
		pr_warn("head:%p order:%u compound_mapcount:%d compound_pincount:%d\n",
				head, compound_order(head),
				head_compound_mapcount(head),
				folio_entire_mapcount(folio),
				head_compound_pincount(head));
	}