Re: [RFC 4/4] mm: Ignore cpuset enforcement when allocation flag has __GFP_THISNODE

From: Dave Hansen
Date: Mon Nov 28 2016 - 16:12:15 EST


On 11/22/2016 06:19 AM, Anshuman Khandual wrote:
> --- a/mm/page_alloc.c
> +++ b/mm/page_alloc.c
> @@ -3715,7 +3715,7 @@ struct page *
> .migratetype = gfpflags_to_migratetype(gfp_mask),
> };
>
> - if (cpusets_enabled()) {
> + if (cpusets_enabled() && !(alloc_mask & __GFP_THISNODE)) {
> alloc_mask |= __GFP_HARDWALL;
> alloc_flags |= ALLOC_CPUSET;
> if (!ac.nodemask)

This means now that any __GFP_THISNODE allocation can "escape" the
cpuset. That seems like a pretty major change to how cpusets works. Do
we know that *ALL* __GFP_THISNODE allocations are truly lacking in a
cpuset context that can be enforced?