|
@@ -3153,12 +3153,10 @@ static void zoneref_set_zone(struct zone *zone, struct zoneref *zoneref)
|
|
|
* Add all populated zones of a node to the zonelist.
|
|
|
*/
|
|
|
static int build_zonelists_node(pg_data_t *pgdat, struct zonelist *zonelist,
|
|
|
- int nr_zones, enum zone_type zone_type)
|
|
|
+ int nr_zones)
|
|
|
{
|
|
|
struct zone *zone;
|
|
|
-
|
|
|
- BUG_ON(zone_type >= MAX_NR_ZONES);
|
|
|
- zone_type++;
|
|
|
+ enum zone_type zone_type = MAX_NR_ZONES;
|
|
|
|
|
|
do {
|
|
|
zone_type--;
|
|
@@ -3168,8 +3166,8 @@ static int build_zonelists_node(pg_data_t *pgdat, struct zonelist *zonelist,
|
|
|
&zonelist->_zonerefs[nr_zones++]);
|
|
|
check_highest_zone(zone_type);
|
|
|
}
|
|
|
-
|
|
|
} while (zone_type);
|
|
|
+
|
|
|
return nr_zones;
|
|
|
}
|
|
|
|
|
@@ -3363,8 +3361,7 @@ static void build_zonelists_in_node_order(pg_data_t *pgdat, int node)
|
|
|
zonelist = &pgdat->node_zonelists[0];
|
|
|
for (j = 0; zonelist->_zonerefs[j].zone != NULL; j++)
|
|
|
;
|
|
|
- j = build_zonelists_node(NODE_DATA(node), zonelist, j,
|
|
|
- MAX_NR_ZONES - 1);
|
|
|
+ j = build_zonelists_node(NODE_DATA(node), zonelist, j);
|
|
|
zonelist->_zonerefs[j].zone = NULL;
|
|
|
zonelist->_zonerefs[j].zone_idx = 0;
|
|
|
}
|
|
@@ -3378,7 +3375,7 @@ static void build_thisnode_zonelists(pg_data_t *pgdat)
|
|
|
struct zonelist *zonelist;
|
|
|
|
|
|
zonelist = &pgdat->node_zonelists[1];
|
|
|
- j = build_zonelists_node(pgdat, zonelist, 0, MAX_NR_ZONES - 1);
|
|
|
+ j = build_zonelists_node(pgdat, zonelist, 0);
|
|
|
zonelist->_zonerefs[j].zone = NULL;
|
|
|
zonelist->_zonerefs[j].zone_idx = 0;
|
|
|
}
|
|
@@ -3586,7 +3583,7 @@ static void build_zonelists(pg_data_t *pgdat)
|
|
|
local_node = pgdat->node_id;
|
|
|
|
|
|
zonelist = &pgdat->node_zonelists[0];
|
|
|
- j = build_zonelists_node(pgdat, zonelist, 0, MAX_NR_ZONES - 1);
|
|
|
+ j = build_zonelists_node(pgdat, zonelist, 0);
|
|
|
|
|
|
/*
|
|
|
* Now we build the zonelist so that it contains the zones
|
|
@@ -3599,14 +3596,12 @@ static void build_zonelists(pg_data_t *pgdat)
|
|
|
for (node = local_node + 1; node < MAX_NUMNODES; node++) {
|
|
|
if (!node_online(node))
|
|
|
continue;
|
|
|
- j = build_zonelists_node(NODE_DATA(node), zonelist, j,
|
|
|
- MAX_NR_ZONES - 1);
|
|
|
+ j = build_zonelists_node(NODE_DATA(node), zonelist, j);
|
|
|
}
|
|
|
for (node = 0; node < local_node; node++) {
|
|
|
if (!node_online(node))
|
|
|
continue;
|
|
|
- j = build_zonelists_node(NODE_DATA(node), zonelist, j,
|
|
|
- MAX_NR_ZONES - 1);
|
|
|
+ j = build_zonelists_node(NODE_DATA(node), zonelist, j);
|
|
|
}
|
|
|
|
|
|
zonelist->_zonerefs[j].zone = NULL;
|