Re: [PATCH mm-unstable v2 1/6] mm: Add folio_estimated_mapcount()

From: David Hildenbrand
Date: Wed Jan 25 2023 - 05:25:07 EST


On 25.01.23 11:20, David Hildenbrand wrote:
On 24.01.23 02:22, Vishal Moola (Oracle) wrote:
folio_estimated_mapcount() takes in a folio and calls page_mapcount() on
the first page of that folio.

This is necessary for folio conversions where we only care about either the
entire_mapcount of a large folio, or the mapcount of a not large folio.

This is in contrast to folio_mapcount() which calculates the total
number of the times a folio and its subpages are mapped.

Signed-off-by: Vishal Moola (Oracle) <vishal.moola@xxxxxxxxx>
---
include/linux/mm.h | 5 +++++
1 file changed, 5 insertions(+)

diff --git a/include/linux/mm.h b/include/linux/mm.h
index c9db257f09b3..543c360f7ecc 100644
--- a/include/linux/mm.h
+++ b/include/linux/mm.h
@@ -875,6 +875,11 @@ static inline int page_mapcount(struct page *page)
return mapcount;
}
+static inline int folio_estimated_mapcount(struct folio *folio)
+{
+ return page_mapcount(folio_page(folio, 0));
+}
+
int folio_total_mapcount(struct folio *folio);
/**

I'm sorry, but "estimated" as absolutely unclear semantics. You could
have a THP mapped into 9999 processes using THP and the estimation would
be "0".

... or would it be 9999 ? What about a PMD-mapped THP? What about a partially unmapped THP?

What are we estimating?

--
Thanks,

David / dhildenb