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

Reply via email to