Re: [PATCH 6/9] mm, page_alloc: simplify zonelist initialization

From: Michal Hocko
Date: Fri Jul 14 2017 - 06:51:19 EST


On Fri 14-07-17 10:55:34, Mel Gorman wrote:
> On Fri, Jul 14, 2017 at 10:00:03AM +0200, Michal Hocko wrote:
> >
> > zonelist = &pgdat->node_zonelists[ZONELIST_NOFALLBACK];
> > - j = build_zonelists_node(pgdat, zonelist, 0);
> > - zonelist->_zonerefs[j].zone = NULL;
> > - zonelist->_zonerefs[j].zone_idx = 0;
> > + zoneref_idx = build_zonelists_node(pgdat, zonelist, zoneref_idx);
> > + zonelist->_zonerefs[zoneref_idx].zone = NULL;
> > + zonelist->_zonerefs[zoneref_idx].zone_idx = 0;
> > }
> >
> > /*
> > @@ -4946,21 +4949,13 @@ static void build_thisnode_zonelists(pg_data_t *pgdat)
> > * exhausted, but results in overflowing to remote node while memory
> > * may still exist in local DMA zone.
> > */
> > -static int node_order[MAX_NUMNODES];
> >
> > static void build_zonelists(pg_data_t *pgdat)
> > {
> > - int i, node, load;
> > + static int node_order[MAX_NUMNODES];
> > + int node, load, i = 0;
>
> Emm, node_order can be large. The first distro config I checked
> indicated that this is 8K. I got hung up on that part and didn't look
> closely at the rest of the patch.

yes, that's why I kept it static. I just placed it into the function to
make it clear what the scope is.
--
Michal Hocko
SUSE Labs