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.
quoted hunk ↗ jump to hunk
+ 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.
quoted hunk ↗ jump to hunk
+ unsigned long mark;
+
+ if (cpusets_enabled() && (alloc_flags & ALLOC_CPUSET) &&
+ !__cpuset_zone_allowed(zone, gfp_mask)) {
+ continue;
+ }
No need for the curly braces.
quoted hunk ↗ jump to hunk
}
- gfp_mask &= gfp_allowed_mask;
- alloc_mask = gfp_mask;
Is this change intentional?