diff options
Diffstat (limited to 'mm/vmscan.c')
-rw-r--r-- | mm/vmscan.c | 17 |
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 | ||
1508 | static int inactive_anon_is_low_global(struct zone *zone) | 1509 | static 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 | ||
1548 | static inline int inactive_anon_is_low(struct zone *zone, | ||
1549 | struct scan_control *sc) | ||
1550 | { | ||
1551 | return 0; | ||
1552 | } | ||
1553 | #endif | ||
1539 | 1554 | ||
1540 | static int inactive_file_is_low_global(struct zone *zone) | 1555 | static 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); |