[PATCH v2 5/5] mm: demotion: Build demotion list based on N_DEMOTION_TARGETS

From: Jagdish Gediya
Date: Wed Apr 13 2022 - 05:22:57 EST


Only nodes which has state N_DEMOTION_TARGETS should be
used as demotion targets.

make nodes which are not in demotion targets as source nodes
while building demotion target list.

Signed-off-by: Aneesh Kumar K.V <aneesh.kumar@xxxxxxxxxxxxx>
Signed-off-by: Jagdish Gediya <jvgediya@xxxxxxxxxxxxx>
---
mm/migrate.c | 7 ++++---
1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/mm/migrate.c b/mm/migrate.c
index 4d3d80ca0a7f..e517a5ab1fcf 100644
--- a/mm/migrate.c
+++ b/mm/migrate.c
@@ -2394,10 +2394,11 @@ static void __set_migration_target_nodes(void)
disable_all_migrate_targets();

/*
- * Allocations go close to CPUs, first. Assume that
- * the migration path starts at the nodes with CPUs.
+ * Pick demotion targets only from node_states[N_DEMOTION_TARGETS]
+ * so make nodes which are not in demotion targets as source nodes
*/
- next_pass = node_states[N_CPU];
+ nodes_andnot(next_pass, node_states[N_ONLINE],
+ node_states[N_DEMOTION_TARGETS]);
again:
this_pass = next_pass;
next_pass = NODE_MASK_NONE;
--
2.35.1