Re: [PATCH 2/5] mm/page_alloc: Add a bulk page allocator

From: Christoph Hellwig
Date: Tue Mar 09 2021 - 12:14:08 EST


Would vmalloc be another good user of this API?

> + /* May set ALLOC_NOFRAGMENT, fragmentation will return 1 page. */
> + if (!prepare_alloc_pages(gfp_mask, 0, preferred_nid, nodemask, &ac, &alloc_mask, &alloc_flags))

This crazy long line is really hard to follow.

> + return 0;
> + gfp_mask = alloc_mask;
> +
> + /* Find an allowed local zone that meets the high watermark. */
> + for_each_zone_zonelist_nodemask(zone, z, ac.zonelist, ac.highest_zoneidx, ac.nodemask) {

Same here.

> + unsigned long mark;
> +
> + if (cpusets_enabled() && (alloc_flags & ALLOC_CPUSET) &&
> + !__cpuset_zone_allowed(zone, gfp_mask)) {
> + continue;
> + }

No need for the curly braces.

> }
>
> - gfp_mask &= gfp_allowed_mask;
> - alloc_mask = gfp_mask;

Is this change intentional?