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

From: Alex Shi
Date: Mon Mar 25 2024 - 11:21:20 EST




On 3/23/24 11:38 AM, Matthew Wilcox wrote:
> 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().

Hi Willy,

Definitely right, the merge series funcs need more careful changes. :)
I'd like to left them for late changes.

Thanks