diff options
Diffstat (limited to 'mm')
-rw-r--r-- | mm/memcontrol.c | 14 | ||||
-rw-r--r-- | mm/vmscan.c | 8 |
2 files changed, 20 insertions, 2 deletions
diff --git a/mm/memcontrol.c b/mm/memcontrol.c index 028d07c79104..6187ca4d5dc2 100644 --- a/mm/memcontrol.c +++ b/mm/memcontrol.c | |||
@@ -1367,6 +1367,20 @@ int mem_cgroup_inactive_anon_is_low(struct lruvec *lruvec) | |||
1367 | return inactive * inactive_ratio < active; | 1367 | return inactive * inactive_ratio < active; |
1368 | } | 1368 | } |
1369 | 1369 | ||
1370 | bool mem_cgroup_lruvec_online(struct lruvec *lruvec) | ||
1371 | { | ||
1372 | struct mem_cgroup_per_zone *mz; | ||
1373 | struct mem_cgroup *memcg; | ||
1374 | |||
1375 | if (mem_cgroup_disabled()) | ||
1376 | return true; | ||
1377 | |||
1378 | mz = container_of(lruvec, struct mem_cgroup_per_zone, lruvec); | ||
1379 | memcg = mz->memcg; | ||
1380 | |||
1381 | return !!(memcg->css.flags & CSS_ONLINE); | ||
1382 | } | ||
1383 | |||
1370 | #define mem_cgroup_from_counter(counter, member) \ | 1384 | #define mem_cgroup_from_counter(counter, member) \ |
1371 | container_of(counter, struct mem_cgroup, member) | 1385 | container_of(counter, struct mem_cgroup, member) |
1372 | 1386 | ||
diff --git a/mm/vmscan.c b/mm/vmscan.c index f756a202d5d5..b6dfa0081a8e 100644 --- a/mm/vmscan.c +++ b/mm/vmscan.c | |||
@@ -1903,8 +1903,12 @@ static void get_scan_count(struct lruvec *lruvec, int swappiness, | |||
1903 | * latencies, so it's better to scan a minimum amount there as | 1903 | * latencies, so it's better to scan a minimum amount there as |
1904 | * well. | 1904 | * well. |
1905 | */ | 1905 | */ |
1906 | if (current_is_kswapd() && !zone_reclaimable(zone)) | 1906 | if (current_is_kswapd()) { |
1907 | force_scan = true; | 1907 | if (!zone_reclaimable(zone)) |
1908 | force_scan = true; | ||
1909 | if (!mem_cgroup_lruvec_online(lruvec)) | ||
1910 | force_scan = true; | ||
1911 | } | ||
1908 | if (!global_reclaim(sc)) | 1912 | if (!global_reclaim(sc)) |
1909 | force_scan = true; | 1913 | force_scan = true; |
1910 | 1914 | ||