[Devel] [PATCH VZ10 6/8] mm/memcontrol: move nr_to_scan fallback out of __memcg_numa_migrate_pages()
Pavel Tikhomirov
ptikhomirov at virtuozzo.com
Tue Sep 2 13:59:16 MSK 2025
To make __memcg_numa_migrate_pages() lru type agnostic we need to remove
all uses of "lru" variable, which is old lru specific. So let's move
nr_to_scan calculation based on "lru" variable out of
__memcg_numa_migrate_pages().
https://virtuozzo.atlassian.net/browse/VSTOR-114298
Fixes: c92459bc18307 ("mm: memcontrol: add memory.numa_migrate file")
Signed-off-by: Pavel Tikhomirov <ptikhomirov at virtuozzo.com>
---
mm/memcontrol.c | 21 ++++++++++-----------
1 file changed, 10 insertions(+), 11 deletions(-)
diff --git a/mm/memcontrol.c b/mm/memcontrol.c
index 4321ac0ef7cb0..f93c70e4a2315 100644
--- a/mm/memcontrol.c
+++ b/mm/memcontrol.c
@@ -3651,13 +3651,6 @@ static long __memcg_numa_migrate_pages(struct lruvec *lruvec, enum lru_list lru,
LIST_HEAD(pages);
long total_scanned = 0;
- /*
- * If no limit on the maximal number of migrated pages is specified,
- * assume the caller wants to migrate them all.
- */
- if (nr_to_scan < 0)
- nr_to_scan = lruvec_page_state_local(lruvec, NR_LRU_BASE + lru);
-
while (total_scanned < nr_to_scan) {
int ret;
long scanned;
@@ -3702,6 +3695,7 @@ static int memcg_numa_migrate_pages(struct mem_cgroup *memcg,
for_each_online_node(nid) {
struct lruvec *lruvec;
enum lru_list lru;
+ long scan, ret;
if (node_isset(nid, *target_nodes))
continue;
@@ -3713,10 +3707,15 @@ static int memcg_numa_migrate_pages(struct mem_cgroup *memcg,
* aren't too many of them, which is usually true.
*/
for_each_evictable_lru(lru) {
- long ret = __memcg_numa_migrate_pages(lruvec,
- lru, target_nodes,
- nr_to_scan > 0 ?
- SWAP_CLUSTER_MAX : -1);
+ /*
+ * If no limit on the maximal number of
+ * migrated pages is specified assume the
+ * caller wants to migrate them all.
+ */
+ scan = nr_to_scan > 0 ? SWAP_CLUSTER_MAX :
+ lruvec_page_state_local(lruvec, NR_LRU_BASE + lru);
+
+ ret = __memcg_numa_migrate_pages(lruvec, lru, target_nodes, scan);
if (ret < 0) {
mem_cgroup_iter_break(memcg, iter);
return ret;
--
2.50.1
More information about the Devel
mailing list