On Wed, Jun 22, 2016 at 06:00:12PM +0200, Vlastimil Babka wrote: > >>- enum zone_type classzone_idx; > >>- > >> if (!populated_zone(zone)) > >> continue; > >> > >>- classzone_idx = requested_highidx; > >>+ /* > >>+ * Note that reclaim_idx does not change as it is the highest > >>+ * zone reclaimed from which for empty zones is a no-op but > >>+ * classzone_idx is used by shrink_node to test if the slabs > >>+ * should be shrunk on a given node. > >>+ */ > >> while (!populated_zone(zone->zone_pgdat->node_zones + > >>- classzone_idx)) > >>+ classzone_idx)) { > >> classzone_idx--; > >>+ continue; > > Oh and Michal's comment on Patch 20 made me realize that my objection to v6 > about possible underflow of sc->reclaim_idx and classzone_idx seems to still > apply here for classzone_idx?
Potentially. The relevant code now looks like this classzone_idx = sc->reclaim_idx; while (!populated_zone(zone->zone_pgdat->node_zones + classzone_idx)) classzone_idx--; -- Mel Gorman SUSE Labs