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 <ptikhomi...@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

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

Reply via email to