On 06/01/2016 04:21 PM, Michal Hocko wrote: > On Tue 31-05-16 15:08:18, Vlastimil Babka wrote: > [...] >> @@ -2364,11 +2350,12 @@ static inline bool should_continue_reclaim(struct >> zone *zone, >> } >> >> static bool shrink_zone(struct zone *zone, struct scan_control *sc, >> - bool is_classzone) >> + int classzone_idx) >> { >> struct reclaim_state *reclaim_state = current->reclaim_state; >> unsigned long nr_reclaimed, nr_scanned; >> bool reclaimable = false; >> + bool is_classzone = (classzone_idx == zone_idx(zone)); >> >> do { >> struct mem_cgroup *root = sc->target_mem_cgroup; >> @@ -2450,7 +2437,7 @@ static bool shrink_zone(struct zone *zone, struct >> scan_control *sc, >> reclaimable = true; >> >> } while (should_continue_reclaim(zone, sc->nr_reclaimed - nr_reclaimed, >> - sc->nr_scanned - nr_scanned, sc)); >> + sc->nr_scanned - nr_scanned, sc, classzone_idx)); >> >> return reclaimable; >> } >> @@ -2580,7 +2567,7 @@ static void shrink_zones(struct zonelist *zonelist, >> struct scan_control *sc) >> /* need some check for avoid more shrink_zone() */ >> } >> >> - shrink_zone(zone, sc, zone_idx(zone) == classzone_idx); >> + shrink_zone(zone, sc, classzone_idx); > > this should be is_classzone, right?
No, this is shrink_zones() context, not shrink_zone().