diff options
-rw-r--r-- | mm/vmscan.c | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/mm/vmscan.c b/mm/vmscan.c index a1ce17f44be0..53947311c777 100644 --- a/mm/vmscan.c +++ b/mm/vmscan.c | |||
@@ -1679,13 +1679,24 @@ static void get_scan_count(struct lruvec *lruvec, struct scan_control *sc, | |||
1679 | 1679 | ||
1680 | if (global_reclaim(sc)) { | 1680 | if (global_reclaim(sc)) { |
1681 | free = zone_page_state(zone, NR_FREE_PAGES); | 1681 | free = zone_page_state(zone, NR_FREE_PAGES); |
1682 | /* If we have very few page cache pages, | ||
1683 | force-scan anon pages. */ | ||
1684 | if (unlikely(file + free <= high_wmark_pages(zone))) { | 1682 | if (unlikely(file + free <= high_wmark_pages(zone))) { |
1683 | /* | ||
1684 | * If we have very few page cache pages, force-scan | ||
1685 | * anon pages. | ||
1686 | */ | ||
1685 | fraction[0] = 1; | 1687 | fraction[0] = 1; |
1686 | fraction[1] = 0; | 1688 | fraction[1] = 0; |
1687 | denominator = 1; | 1689 | denominator = 1; |
1688 | goto out; | 1690 | goto out; |
1691 | } else if (!inactive_file_is_low_global(zone)) { | ||
1692 | /* | ||
1693 | * There is enough inactive page cache, do not | ||
1694 | * reclaim anything from the working set right now. | ||
1695 | */ | ||
1696 | fraction[0] = 0; | ||
1697 | fraction[1] = 1; | ||
1698 | denominator = 1; | ||
1699 | goto out; | ||
1689 | } | 1700 | } |
1690 | } | 1701 | } |
1691 | 1702 | ||