mm: vmscan: turn shrink_node_memcg() into shrink_lruvec()
[platform/kernel/linux-rpi.git] / mm / vmscan.c
index c0397dd..7175dcd 100644 (file)
@@ -2281,9 +2281,10 @@ enum scan_balance {
  * nr[0] = anon inactive pages to scan; nr[1] = anon active pages to scan
  * nr[2] = file inactive pages to scan; nr[3] = file active pages to scan
  */
-static void get_scan_count(struct lruvec *lruvec, struct mem_cgroup *memcg,
-                          struct scan_control *sc, unsigned long *nr)
+static void get_scan_count(struct lruvec *lruvec, struct scan_control *sc,
+                          unsigned long *nr)
 {
+       struct mem_cgroup *memcg = lruvec_memcg(lruvec);
        int swappiness = mem_cgroup_swappiness(memcg);
        struct zone_reclaim_stat *reclaim_stat = &lruvec->reclaim_stat;
        u64 fraction[2];
@@ -2534,13 +2535,8 @@ out:
        }
 }
 
-/*
- * This is a basic per-node page freer.  Used by both kswapd and direct reclaim.
- */
-static void shrink_node_memcg(struct pglist_data *pgdat, struct mem_cgroup *memcg,
-                             struct scan_control *sc)
+static void shrink_lruvec(struct lruvec *lruvec, struct scan_control *sc)
 {
-       struct lruvec *lruvec = mem_cgroup_lruvec(memcg, pgdat);
        unsigned long nr[NR_LRU_LISTS];
        unsigned long targets[NR_LRU_LISTS];
        unsigned long nr_to_scan;
@@ -2550,7 +2546,7 @@ static void shrink_node_memcg(struct pglist_data *pgdat, struct mem_cgroup *memc
        struct blk_plug plug;
        bool scan_adjusted;
 
-       get_scan_count(lruvec, memcg, sc, nr);
+       get_scan_count(lruvec, sc, nr);
 
        /* Record the original scan target for proportional adjustments later */
        memcpy(targets, nr, sizeof(nr));
@@ -2745,6 +2741,7 @@ again:
 
        memcg = mem_cgroup_iter(root, NULL, NULL);
        do {
+               struct lruvec *lruvec = mem_cgroup_lruvec(memcg, pgdat);
                unsigned long reclaimed;
                unsigned long scanned;
 
@@ -2781,7 +2778,8 @@ again:
 
                reclaimed = sc->nr_reclaimed;
                scanned = sc->nr_scanned;
-               shrink_node_memcg(pgdat, memcg, sc);
+
+               shrink_lruvec(lruvec, sc);
 
                shrink_slab(sc->gfp_mask, pgdat->node_id, memcg,
                            sc->priority);
@@ -3285,6 +3283,7 @@ unsigned long mem_cgroup_shrink_node(struct mem_cgroup *memcg,
                                                pg_data_t *pgdat,
                                                unsigned long *nr_scanned)
 {
+       struct lruvec *lruvec = mem_cgroup_lruvec(memcg, pgdat);
        struct scan_control sc = {
                .nr_to_reclaim = SWAP_CLUSTER_MAX,
                .target_mem_cgroup = memcg,
@@ -3309,7 +3308,7 @@ unsigned long mem_cgroup_shrink_node(struct mem_cgroup *memcg,
         * will pick up pages from other mem cgroup's as well. We hack
         * the priority and make it zero.
         */
-       shrink_node_memcg(pgdat, memcg, &sc);
+       shrink_lruvec(lruvec, &sc);
 
        trace_mm_vmscan_memcg_softlimit_reclaim_end(sc.nr_reclaimed);