Re: [PATCH v2 13/14] mm/ksm: use folio_set_stable_node in try_to_merge_one_page

From: Matthew Wilcox
Date: Fri Mar 22 2024 - 23:39:00 EST


On Fri, Mar 22, 2024 at 04:37:00PM +0800, alexs@xxxxxxxxxx wrote:
> From: "Alex Shi (tencent)" <alexs@xxxxxxxxxx>
>
> Only single page could be reached where we set stable node after write
> protect, so use folio converted func to replace page's.
>
> 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>
> ---
> mm/ksm.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/mm/ksm.c b/mm/ksm.c
> index 15a78a9bab59..d7c4cc4a0cc1 100644
> --- a/mm/ksm.c
> +++ b/mm/ksm.c
> @@ -1518,7 +1518,7 @@ static int try_to_merge_one_page(struct vm_area_struct *vma,
> * PageAnon+anon_vma to PageKsm+NULL stable_node:
> * stable_tree_insert() will update stable_node.
> */
> - set_page_stable_node(page, NULL);
> + folio_set_stable_node(page_folio(page), NULL);
> mark_page_accessed(page);

I'd rather you did a conversion of try_to_merge_one_page() instead of
just this. It'll be a fun one because you'll have to recalculate the
folio after calling split_huge_page().