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>
---
 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;
-- 
2.50.1

_______________________________________________
Devel mailing list
Devel@openvz.org
https://lists.openvz.org/mailman/listinfo/devel

Reply via email to