diff options
-rw-r--r-- | mm/vmscan.c | 22 |
1 files changed, 2 insertions, 20 deletions
diff --git a/mm/vmscan.c b/mm/vmscan.c index 8e03427cb64f..2ee4d9283738 100644 --- a/mm/vmscan.c +++ b/mm/vmscan.c | |||
@@ -2664,10 +2664,6 @@ static bool shrink_node(pg_data_t *pgdat, struct scan_control *sc) | |||
2664 | 2664 | ||
2665 | do { | 2665 | do { |
2666 | struct mem_cgroup *root = sc->target_mem_cgroup; | 2666 | struct mem_cgroup *root = sc->target_mem_cgroup; |
2667 | struct mem_cgroup_reclaim_cookie reclaim = { | ||
2668 | .pgdat = pgdat, | ||
2669 | .priority = sc->priority, | ||
2670 | }; | ||
2671 | unsigned long node_lru_pages = 0; | 2667 | unsigned long node_lru_pages = 0; |
2672 | struct mem_cgroup *memcg; | 2668 | struct mem_cgroup *memcg; |
2673 | 2669 | ||
@@ -2676,7 +2672,7 @@ static bool shrink_node(pg_data_t *pgdat, struct scan_control *sc) | |||
2676 | nr_reclaimed = sc->nr_reclaimed; | 2672 | nr_reclaimed = sc->nr_reclaimed; |
2677 | nr_scanned = sc->nr_scanned; | 2673 | nr_scanned = sc->nr_scanned; |
2678 | 2674 | ||
2679 | memcg = mem_cgroup_iter(root, NULL, &reclaim); | 2675 | memcg = mem_cgroup_iter(root, NULL, NULL); |
2680 | do { | 2676 | do { |
2681 | unsigned long lru_pages; | 2677 | unsigned long lru_pages; |
2682 | unsigned long reclaimed; | 2678 | unsigned long reclaimed; |
@@ -2719,21 +2715,7 @@ static bool shrink_node(pg_data_t *pgdat, struct scan_control *sc) | |||
2719 | sc->nr_scanned - scanned, | 2715 | sc->nr_scanned - scanned, |
2720 | sc->nr_reclaimed - reclaimed); | 2716 | sc->nr_reclaimed - reclaimed); |
2721 | 2717 | ||
2722 | /* | 2718 | } while ((memcg = mem_cgroup_iter(root, memcg, NULL))); |
2723 | * Kswapd have to scan all memory cgroups to fulfill | ||
2724 | * the overall scan target for the node. | ||
2725 | * | ||
2726 | * Limit reclaim, on the other hand, only cares about | ||
2727 | * nr_to_reclaim pages to be reclaimed and it will | ||
2728 | * retry with decreasing priority if one round over the | ||
2729 | * whole hierarchy is not sufficient. | ||
2730 | */ | ||
2731 | if (!current_is_kswapd() && | ||
2732 | sc->nr_reclaimed >= sc->nr_to_reclaim) { | ||
2733 | mem_cgroup_iter_break(root, memcg); | ||
2734 | break; | ||
2735 | } | ||
2736 | } while ((memcg = mem_cgroup_iter(root, memcg, &reclaim))); | ||
2737 | 2719 | ||
2738 | if (reclaim_state) { | 2720 | if (reclaim_state) { |
2739 | sc->nr_reclaimed += reclaim_state->reclaimed_slab; | 2721 | sc->nr_reclaimed += reclaim_state->reclaimed_slab; |