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?