Re: [PATCH RFC 04/29] mm/page_alloc: allow for making page types sticky until freed
From: Zi Yan <ziy@nvidia.com>
Date: 2025-06-23 15:28:49
Also in:
linux-fsdevel, linux-mm, linuxppc-dev, lkml, virtualization
On 23 Jun 2025, at 11:26, David Hildenbrand wrote:
On 18.06.25 20:08, Zi Yan wrote:quoted
On 18 Jun 2025, at 14:04, Zi Yan wrote:quoted
On 18 Jun 2025, at 13:39, David Hildenbrand wrote:quoted
Let's allow for not clearing a page type before freeing a page to the buddy. We'll focus on having a type set on the first page of a larger allocation only. With this change, we can reliably identify typed folios even though they might be in the process of getting freed, which will come in handy in migration code (at least in the transition phase). Signed-off-by: David Hildenbrand <redacted> --- mm/page_alloc.c | 3 +++ 1 file changed, 3 insertions(+)diff --git a/mm/page_alloc.c b/mm/page_alloc.c index 858bc17653af9..44e56d31cfeb1 100644 --- a/mm/page_alloc.c +++ b/mm/page_alloc.c@@ -1380,6 +1380,9 @@ __always_inline bool free_pages_prepare(struct page *page, mod_mthp_stat(order, MTHP_STAT_NR_ANON, -1); page->mapping = NULL; } + if (unlikely(page_has_type(page))) + page->page_type = UINT_MAX; + if (is_check_pages_enabled()) { if (free_page_is_bad(page)) bad++;-- 2.49.0How does this preserve page type? Isn’t page->page_type = UINT_MAX clearing page_type?OK, next patch explains it. free_pages_prepare() clears page_type, so that caller does not need to. I think the message is better to be mm/page_alloc: clear page_type at page free time page_type is no longer needed to be cleared before a page is freed, as page free code does that. With this change, we can reliably identify typed folios even though they might be in the process of getting freed, which will come in handy in migration code (at least in the transition phase).I'll change it to mm/page_alloc: let page freeing clear any set page type Currently, any user of page types must clear that type before freeing a page back to the buddy, otherwise we'll run into mapcount related sanity checks (because the page type currently overlays the page mapcount). Let's allow for not clearing the page type by page type users by letting the buddy handle it instead. We'll focus on having a page type set on the first page of a larger allocation only. With this change, we can reliably identify typed folios even though they might be in the process of getting freed, which will come in handy in migration code (at least in the transition phase).
Thanks. Reviewed-by: Zi Yan <ziy@nvidia.com> -- Best Regards, Yan, Zi