|
@@ -1761,10 +1761,10 @@ static void get_scan_count(struct mem_cgroup_zone *mz, struct scan_control *sc,
|
|
|
* proportional to the fraction of recently scanned pages on
|
|
|
* each list that were recently referenced and in active use.
|
|
|
*/
|
|
|
- ap = (anon_prio + 1) * (reclaim_stat->recent_scanned[0] + 1);
|
|
|
+ ap = anon_prio * (reclaim_stat->recent_scanned[0] + 1);
|
|
|
ap /= reclaim_stat->recent_rotated[0] + 1;
|
|
|
|
|
|
- fp = (file_prio + 1) * (reclaim_stat->recent_scanned[1] + 1);
|
|
|
+ fp = file_prio * (reclaim_stat->recent_scanned[1] + 1);
|
|
|
fp /= reclaim_stat->recent_rotated[1] + 1;
|
|
|
spin_unlock_irq(&mz->zone->lru_lock);
|
|
|
|
|
@@ -1777,7 +1777,7 @@ out:
|
|
|
unsigned long scan;
|
|
|
|
|
|
scan = zone_nr_lru_pages(mz, lru);
|
|
|
- if (priority || noswap) {
|
|
|
+ if (priority || noswap || !vmscan_swappiness(mz, sc)) {
|
|
|
scan >>= priority;
|
|
|
if (!scan && force_scan)
|
|
|
scan = SWAP_CLUSTER_MAX;
|