Re: [PATCH v4 8/9] mm/ksm: Convert chain series funcs and replace get_ksm_page

From: David Hildenbrand
Date: Tue Apr 09 2024 - 07:02:15 EST


On 09.04.24 11:28, alexs@xxxxxxxxxx wrote:
From: "Alex Shi (tencent)" <alexs@xxxxxxxxxx>

In ksm stable tree all page are single, let's convert them to use and
folios as well as stable_tree_insert/stable_tree_search funcs.
And replace get_ksm_page() by ksm_get_folio() since there is no more
needs.

It could save a few compound_head calls.

Signed-off-by: Alex Shi (tencent) <alexs@xxxxxxxxxx>
Cc: Izik Eidus <izik.eidus@xxxxxxxxxxxxxxxxxx>
Cc: Matthew Wilcox <willy@xxxxxxxxxxxxx>
Cc: Andrea Arcangeli <aarcange@xxxxxxxxxx>
Cc: Hugh Dickins <hughd@xxxxxxxxxx>
Cc: Chris Wright <chrisw@xxxxxxxxxxxx>
Reviewed-by: David Hildenbrand <david@xxxxxxxxxx>

I don't recall giving that yet :)

You could have kept some get_ksm_page()->ksm_get_folio() into a separate patch.

i.e., "[PATCH v3 11/14] mm/ksm: remove get_ksm_page and related info" from your old series could have mostly stayed separately.

[...]

/*
@@ -1829,7 +1821,7 @@ static __always_inline struct page *chain(struct ksm_stable_node **s_n_d,
* This function returns the stable tree node of identical content if found,
* NULL otherwise.
*/
-static struct page *stable_tree_search(struct page *page)
+static void *stable_tree_search(struct page *page)

There is one caller of stable_tree_search() in cmp_and_merge_page().

Why the change from page* to void* ?

I suspect cmp_and_merge_page() could similarly be converted to some degree to let kpage be a folio (separate patch).

--
Cheers,

David / dhildenb