The commit is pushed to "branch-rh10-6.12.0-55.13.1.2.x.vz10-ovz" and will appear at g...@bitbucket.org:openvz/vzkernel.git after rh10-6.12.0-55.13.1.2.3.vz10 ------> commit 6fb69faf3b28c4f7d1e1ee8abb35418321f08e98 Author: Pavel Tikhomirov <ptikhomi...@virtuozzo.com> Date: Tue Sep 2 18:59:17 2025 +0800
mm/memcontrol: directly provide lru list in memcg_numa_isolate_pages() arguments To make memcg_numa_isolate_pages() work both for old lru and new Multi-Gen LRU, we need to have src list argument instead of determining the list internally. The "lru" argument becomes unused, so let's remove it. Also reorder memcg_numa_isolate_pages arguments to a more logical order. https://virtuozzo.atlassian.net/browse/VSTOR-114298 Fixes: c92459bc18307 ("mm: memcontrol: add memory.numa_migrate file") Signed-off-by: Pavel Tikhomirov <ptikhomi...@virtuozzo.com> Feature: mm: interface to migrate memory between NUMA nodes upon userspace request --- mm/memcontrol.c | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/mm/memcontrol.c b/mm/memcontrol.c index f93c70e4a2315..d4461342c3d5a 100644 --- a/mm/memcontrol.c +++ b/mm/memcontrol.c @@ -3507,10 +3507,10 @@ static __always_inline void update_lru_sizes(struct lruvec *lruvec, * store them in @dst. Returns the number of pages scanned. Return value of 0 * means that @lruvec is empty. */ -static long memcg_numa_isolate_pages(struct lruvec *lruvec, enum lru_list lru, - long nr_to_scan, struct list_head *dst) +static long memcg_numa_isolate_pages(struct lruvec *lruvec, + struct list_head *src, struct list_head *dst, + long nr_to_scan) { - struct list_head *src = &lruvec->lists[lru]; long scanned = 0, taken = 0; struct folio *folio = NULL; struct address_space *mapping; @@ -3641,7 +3641,7 @@ static long memcg_numa_isolate_pages(struct lruvec *lruvec, enum lru_list lru, return scanned; } -static long __memcg_numa_migrate_pages(struct lruvec *lruvec, enum lru_list lru, +static long __memcg_numa_migrate_pages(struct lruvec *lruvec, struct list_head *src, nodemask_t *target_nodes, long nr_to_scan) { struct memcg_numa_migrate_struct ms = { @@ -3655,8 +3655,7 @@ static long __memcg_numa_migrate_pages(struct lruvec *lruvec, enum lru_list lru, int ret; long scanned; - scanned = memcg_numa_isolate_pages(lruvec, lru, - SWAP_CLUSTER_MAX, &pages); + scanned = memcg_numa_isolate_pages(lruvec, src, &pages, SWAP_CLUSTER_MAX); if (!scanned) break; @@ -3694,6 +3693,7 @@ static int memcg_numa_migrate_pages(struct mem_cgroup *memcg, for_each_online_node(nid) { struct lruvec *lruvec; + struct list_head *src; enum lru_list lru; long scan, ret; @@ -3714,8 +3714,9 @@ static int memcg_numa_migrate_pages(struct mem_cgroup *memcg, */ scan = nr_to_scan > 0 ? SWAP_CLUSTER_MAX : lruvec_page_state_local(lruvec, NR_LRU_BASE + lru); + src = &lruvec->lists[lru]; - ret = __memcg_numa_migrate_pages(lruvec, lru, target_nodes, scan); + ret = __memcg_numa_migrate_pages(lruvec, src, target_nodes, scan); if (ret < 0) { mem_cgroup_iter_break(memcg, iter); return ret; _______________________________________________ Devel mailing list Devel@openvz.org https://lists.openvz.org/mailman/listinfo/devel