|
@@ -1808,23 +1808,15 @@ static void get_scan_count(struct zone *zone, struct scan_control *sc,
|
|
|
u64 fraction[2], denominator;
|
|
|
enum lru_list l;
|
|
|
int noswap = 0;
|
|
|
- int force_scan = 0;
|
|
|
+ bool force_scan = false;
|
|
|
unsigned long nr_force_scan[2];
|
|
|
|
|
|
-
|
|
|
- anon = zone_nr_lru_pages(zone, sc, LRU_ACTIVE_ANON) +
|
|
|
- zone_nr_lru_pages(zone, sc, LRU_INACTIVE_ANON);
|
|
|
- file = zone_nr_lru_pages(zone, sc, LRU_ACTIVE_FILE) +
|
|
|
- zone_nr_lru_pages(zone, sc, LRU_INACTIVE_FILE);
|
|
|
-
|
|
|
- if (((anon + file) >> priority) < SWAP_CLUSTER_MAX) {
|
|
|
- /* kswapd does zone balancing and need to scan this zone */
|
|
|
- if (scanning_global_lru(sc) && current_is_kswapd())
|
|
|
- force_scan = 1;
|
|
|
- /* memcg may have small limit and need to avoid priority drop */
|
|
|
- if (!scanning_global_lru(sc))
|
|
|
- force_scan = 1;
|
|
|
- }
|
|
|
+ /* kswapd does zone balancing and needs to scan this zone */
|
|
|
+ if (scanning_global_lru(sc) && current_is_kswapd())
|
|
|
+ force_scan = true;
|
|
|
+ /* memcg may have small limit and need to avoid priority drop */
|
|
|
+ if (!scanning_global_lru(sc))
|
|
|
+ force_scan = true;
|
|
|
|
|
|
/* If we have no swap space, do not bother scanning anon pages. */
|
|
|
if (!sc->may_swap || (nr_swap_pages <= 0)) {
|
|
@@ -1837,6 +1829,11 @@ static void get_scan_count(struct zone *zone, struct scan_control *sc,
|
|
|
goto out;
|
|
|
}
|
|
|
|
|
|
+ anon = zone_nr_lru_pages(zone, sc, LRU_ACTIVE_ANON) +
|
|
|
+ zone_nr_lru_pages(zone, sc, LRU_INACTIVE_ANON);
|
|
|
+ file = zone_nr_lru_pages(zone, sc, LRU_ACTIVE_FILE) +
|
|
|
+ zone_nr_lru_pages(zone, sc, LRU_INACTIVE_FILE);
|
|
|
+
|
|
|
if (scanning_global_lru(sc)) {
|
|
|
free = zone_page_state(zone, NR_FREE_PAGES);
|
|
|
/* If we have very few page cache pages,
|