aboutsummaryrefslogtreecommitdiffstats
path: root/mm/vmscan.c
diff options
context:
space:
mode:
Diffstat (limited to 'mm/vmscan.c')
-rw-r--r--mm/vmscan.c17
1 files changed, 16 insertions, 1 deletions
diff --git a/mm/vmscan.c b/mm/vmscan.c
index f5871ee50000..0c33a0997907 100644
--- a/mm/vmscan.c
+++ b/mm/vmscan.c
@@ -1505,6 +1505,7 @@ static void shrink_active_list(unsigned long nr_pages, struct zone *zone,
1505 spin_unlock_irq(&zone->lru_lock); 1505 spin_unlock_irq(&zone->lru_lock);
1506} 1506}
1507 1507
1508#ifdef CONFIG_SWAP
1508static int inactive_anon_is_low_global(struct zone *zone) 1509static int inactive_anon_is_low_global(struct zone *zone)
1509{ 1510{
1510 unsigned long active, inactive; 1511 unsigned long active, inactive;
@@ -1530,12 +1531,26 @@ static int inactive_anon_is_low(struct zone *zone, struct scan_control *sc)
1530{ 1531{
1531 int low; 1532 int low;
1532 1533
1534 /*
1535 * If we don't have swap space, anonymous page deactivation
1536 * is pointless.
1537 */
1538 if (!total_swap_pages)
1539 return 0;
1540
1533 if (scanning_global_lru(sc)) 1541 if (scanning_global_lru(sc))
1534 low = inactive_anon_is_low_global(zone); 1542 low = inactive_anon_is_low_global(zone);
1535 else 1543 else
1536 low = mem_cgroup_inactive_anon_is_low(sc->mem_cgroup); 1544 low = mem_cgroup_inactive_anon_is_low(sc->mem_cgroup);
1537 return low; 1545 return low;
1538} 1546}
1547#else
1548static inline int inactive_anon_is_low(struct zone *zone,
1549 struct scan_control *sc)
1550{
1551 return 0;
1552}
1553#endif
1539 1554
1540static int inactive_file_is_low_global(struct zone *zone) 1555static int inactive_file_is_low_global(struct zone *zone)
1541{ 1556{
@@ -1781,7 +1796,7 @@ static void shrink_zone(int priority, struct zone *zone,
1781 * Even if we did not try to evict anon pages at all, we want to 1796 * Even if we did not try to evict anon pages at all, we want to
1782 * rebalance the anon lru active/inactive ratio. 1797 * rebalance the anon lru active/inactive ratio.
1783 */ 1798 */
1784 if (inactive_anon_is_low(zone, sc) && nr_swap_pages > 0) 1799 if (inactive_anon_is_low(zone, sc))
1785 shrink_active_list(SWAP_CLUSTER_MAX, zone, sc, priority, 0); 1800 shrink_active_list(SWAP_CLUSTER_MAX, zone, sc, priority, 0);
1786 1801
1787 throttle_vm_writeout(sc->gfp_mask); 1802 throttle_vm_writeout(sc->gfp_mask);