The patch titled Subject: mm/ksm: replace set_page_stable_node by folio_set_stable_node has been added to the -mm mm-unstable branch. Its filename is mm-ksm-replace-set_page_stable_node-by-folio_set_stable_node.patch This patch will shortly appear at https://git.kernel.org/pub/scm/linux/kernel/git/akpm/25-new.git/tree/patches/mm-ksm-replace-set_page_stable_node-by-folio_set_stable_node.patch This patch will later appear in the mm-unstable branch at git://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm Before you just go and hit "reply", please: a) Consider who else should be cc'ed b) Prefer to cc a suitable mailing list as well c) Ideally: find the original patch on the mailing list and do a reply-to-all to that, adding suitable additional cc's *** Remember to use Documentation/process/submit-checklist.rst when testing your code *** The -mm tree is included into linux-next via the mm-everything branch at git://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm and is updated there every 2-3 working days ------------------------------------------------------ From: "Alex Shi (tencent)" <alexs@xxxxxxxxxx> Subject: mm/ksm: replace set_page_stable_node by folio_set_stable_node Date: Thu, 11 Apr 2024 14:17:11 +0800 Only single page could be reached where we set stable node after write protect, so use folio converted func to replace page's. And remove the unused func set_page_stable_node(). Link: https://lkml.kernel.org/r/20240411061713.1847574-11-alexs@xxxxxxxxxx Signed-off-by: Alex Shi (tencent) <alexs@xxxxxxxxxx> Reviewed-by: David Hildenbrand <david@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> Signed-off-by: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> --- mm/ksm.c | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) --- a/mm/ksm.c~mm-ksm-replace-set_page_stable_node-by-folio_set_stable_node +++ a/mm/ksm.c @@ -1094,17 +1094,11 @@ static inline struct ksm_stable_node *pa return folio_stable_node(page_folio(page)); } -static inline void set_page_stable_node(struct page *page, - struct ksm_stable_node *stable_node) -{ - VM_BUG_ON_PAGE(PageAnon(page) && PageAnonExclusive(page), page); - page->mapping = (void *)((unsigned long)stable_node | PAGE_MAPPING_KSM); -} - static inline void folio_set_stable_node(struct folio *folio, struct ksm_stable_node *stable_node) { - set_page_stable_node(&folio->page, stable_node); + VM_WARN_ON_FOLIO(folio_test_anon(folio) && PageAnonExclusive(&folio->page), folio); + folio->mapping = (void *)((unsigned long)stable_node | PAGE_MAPPING_KSM); } #ifdef CONFIG_SYSFS @@ -1519,7 +1513,7 @@ static int try_to_merge_one_page(struct * 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); /* * Page reclaim just frees a clean page with no dirty _ Patches currently in -mm which might be from alexs@xxxxxxxxxx are mm-ksm-add-ksm_get_folio.patch mm-ksm-use-folio-in-remove_rmap_item_from_tree.patch mm-ksm-add-folio_set_stable_node.patch mm-ksm-use-folio-in-remove_stable_node.patch mm-ksm-use-folio-in-stable_node_dup.patch mm-ksm-use-ksm_get_folio-in-scan_get_next_rmap_item.patch mm-ksm-use-folio-in-write_protect_page.patch mm-ksm-convert-chain-series-funcs-and-replace-get_ksm_page.patch mm-ksm-replace-set_page_stable_node-by-folio_set_stable_node.patch