From: Vladimir Davydov <vdavydov....@gmail.com>

The patch makes shrink_slab() be called for root_mem_cgroup
in the same way as it's called for the rest of cgroups.
This simplifies the logic and improves the readability.

Signed-off-by: Vladimir Davydov <vdavydov....@gmail.com>
ktkhai: Description written.
Signed-off-by: Kirill Tkhai <ktk...@virtuozzo.com>
---
 mm/vmscan.c |   13 +++----------
 1 file changed, 3 insertions(+), 10 deletions(-)

diff --git a/mm/vmscan.c b/mm/vmscan.c
index 2fbf3b476601..f1d23e2df988 100644
--- a/mm/vmscan.c
+++ b/mm/vmscan.c
@@ -661,9 +661,6 @@ static unsigned long shrink_slab(gfp_t gfp_mask, int nid,
                        .memcg = memcg,
                };
 
-               if (!!memcg != !!(shrinker->flags & SHRINKER_MEMCG_AWARE))
-                       continue;
-
                if (!(shrinker->flags & SHRINKER_NUMA_AWARE))
                        sc.nid = 0;
 
@@ -693,6 +690,7 @@ void drop_slab_node(int nid)
                struct mem_cgroup *memcg = NULL;
 
                freed = 0;
+               memcg = mem_cgroup_iter(NULL, NULL, NULL);
                do {
                        freed += shrink_slab(GFP_KERNEL, nid, memcg, 0);
                } while ((memcg = mem_cgroup_iter(NULL, memcg, NULL)) != NULL);
@@ -2712,9 +2710,8 @@ static bool shrink_node(pg_data_t *pgdat, struct 
scan_control *sc)
                        shrink_node_memcg(pgdat, memcg, sc, &lru_pages);
                        node_lru_pages += lru_pages;
 
-                       if (memcg)
-                               shrink_slab(sc->gfp_mask, pgdat->node_id,
-                                           memcg, sc->priority);
+                       shrink_slab(sc->gfp_mask, pgdat->node_id,
+                                   memcg, sc->priority);
 
                        /* Record the group's reclaim efficiency */
                        vmpressure(sc->gfp_mask, memcg, false,
@@ -2738,10 +2735,6 @@ static bool shrink_node(pg_data_t *pgdat, struct 
scan_control *sc)
                        }
                } while ((memcg = mem_cgroup_iter(root, memcg, &reclaim)));
 
-               if (global_reclaim(sc))
-                       shrink_slab(sc->gfp_mask, pgdat->node_id, NULL,
-                                   sc->priority);
-
                if (reclaim_state) {
                        sc->nr_reclaimed += reclaim_state->reclaimed_slab;
                        reclaim_state->reclaimed_slab = 0;

Reply via email to