mm/ksm: remove page_mapcount() usage in stable_tree_search()
We want to limit the use of page_mapcount() to the places where it is absolutely necessary. If our folio has a stable node, it is a (small) KSM folio -- see folio_stable_node(). Let's use folio_mapcount() in stable_tree_search() instead, which results in no functional change. The mapcount > 1 check is a bit confusing, because that's usually a check for page sharing. Looks like the reason is that we are guaranteed to not exceed ksm_max_page_sharing for the tree KSM folio when merging with that. Let's update the documentation to make that clearer. Link: https://lkml.kernel.org/r/20240416172533.663418-1-david@redhat.com Signed-off-by: David Hildenbrand <david@redhat.com> Reviewed-by: Alex Shi <alexs@kernel.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
This commit is contained in:
parent
c074e1467f
commit
2aa339120c
13
mm/ksm.c
13
mm/ksm.c
@ -1909,12 +1909,15 @@ again:
|
||||
if (page_node) {
|
||||
VM_BUG_ON(page_node->head != &migrate_nodes);
|
||||
/*
|
||||
* Test if the migrated page should be merged
|
||||
* into a stable node dup. If the mapcount is
|
||||
* 1 we can migrate it with another KSM page
|
||||
* without adding it to the chain.
|
||||
* If the mapcount of our migrated KSM folio is
|
||||
* at most 1, we can merge it with another
|
||||
* KSM folio where we know that we have space
|
||||
* for one more mapping without exceeding the
|
||||
* ksm_max_page_sharing limit: see
|
||||
* chain_prune(). This way, we can avoid adding
|
||||
* this stable node to the chain.
|
||||
*/
|
||||
if (page_mapcount(page) > 1)
|
||||
if (folio_mapcount(folio) > 1)
|
||||
goto chain_append;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user