diff options
Diffstat (limited to 'mm/vmscan.c')
-rw-r--r-- | mm/vmscan.c | 20 |
1 files changed, 13 insertions, 7 deletions
diff --git a/mm/vmscan.c b/mm/vmscan.c index 88ab53c9949a..d2f65c856350 100644 --- a/mm/vmscan.c +++ b/mm/vmscan.c | |||
@@ -1930,11 +1930,6 @@ static void get_scan_count(struct lruvec *lruvec, int swappiness, | |||
1930 | goto out; | 1930 | goto out; |
1931 | } | 1931 | } |
1932 | 1932 | ||
1933 | anon = get_lru_size(lruvec, LRU_ACTIVE_ANON) + | ||
1934 | get_lru_size(lruvec, LRU_INACTIVE_ANON); | ||
1935 | file = get_lru_size(lruvec, LRU_ACTIVE_FILE) + | ||
1936 | get_lru_size(lruvec, LRU_INACTIVE_FILE); | ||
1937 | |||
1938 | /* | 1933 | /* |
1939 | * Prevent the reclaimer from falling into the cache trap: as | 1934 | * Prevent the reclaimer from falling into the cache trap: as |
1940 | * cache pages start out inactive, every cache fault will tip | 1935 | * cache pages start out inactive, every cache fault will tip |
@@ -1945,9 +1940,14 @@ static void get_scan_count(struct lruvec *lruvec, int swappiness, | |||
1945 | * anon pages. Try to detect this based on file LRU size. | 1940 | * anon pages. Try to detect this based on file LRU size. |
1946 | */ | 1941 | */ |
1947 | if (global_reclaim(sc)) { | 1942 | if (global_reclaim(sc)) { |
1948 | unsigned long free = zone_page_state(zone, NR_FREE_PAGES); | 1943 | unsigned long zonefile; |
1944 | unsigned long zonefree; | ||
1945 | |||
1946 | zonefree = zone_page_state(zone, NR_FREE_PAGES); | ||
1947 | zonefile = zone_page_state(zone, NR_ACTIVE_FILE) + | ||
1948 | zone_page_state(zone, NR_INACTIVE_FILE); | ||
1949 | 1949 | ||
1950 | if (unlikely(file + free <= high_wmark_pages(zone))) { | 1950 | if (unlikely(zonefile + zonefree <= high_wmark_pages(zone))) { |
1951 | scan_balance = SCAN_ANON; | 1951 | scan_balance = SCAN_ANON; |
1952 | goto out; | 1952 | goto out; |
1953 | } | 1953 | } |
@@ -1982,6 +1982,12 @@ static void get_scan_count(struct lruvec *lruvec, int swappiness, | |||
1982 | * | 1982 | * |
1983 | * anon in [0], file in [1] | 1983 | * anon in [0], file in [1] |
1984 | */ | 1984 | */ |
1985 | |||
1986 | anon = get_lru_size(lruvec, LRU_ACTIVE_ANON) + | ||
1987 | get_lru_size(lruvec, LRU_INACTIVE_ANON); | ||
1988 | file = get_lru_size(lruvec, LRU_ACTIVE_FILE) + | ||
1989 | get_lru_size(lruvec, LRU_INACTIVE_FILE); | ||
1990 | |||
1985 | spin_lock_irq(&zone->lru_lock); | 1991 | spin_lock_irq(&zone->lru_lock); |
1986 | if (unlikely(reclaim_stat->recent_scanned[0] > anon / 4)) { | 1992 | if (unlikely(reclaim_stat->recent_scanned[0] > anon / 4)) { |
1987 | reclaim_stat->recent_scanned[0] /= 2; | 1993 | reclaim_stat->recent_scanned[0] /= 2; |