On Wed 10-03-21 13:19:47, Feng Tang wrote: [...] > diff --git a/mm/mempolicy.c b/mm/mempolicy.c > index d66c1c0..00b19f7 100644 > --- a/mm/mempolicy.c > +++ b/mm/mempolicy.c > @@ -2205,9 +2205,13 @@ static struct page *alloc_pages_policy(struct mempolicy *pol, gfp_t gfp, > * | MPOL_PREFERRED_MANY (round 2) | local | NULL | > * +-------------------------------+---------------+------------+ > */ > - if (pol->mode == MPOL_PREFERRED_MANY) > + if (pol->mode == MPOL_PREFERRED_MANY) { > gfp_mask |= __GFP_RETRY_MAYFAIL | __GFP_NOWARN; > > + /* Skip direct reclaim, as there will be a second try */ > + gfp_mask &= ~__GFP_DIRECT_RECLAIM; __GFP_RETRY_MAYFAIL is a reclaim modifier which doesn't make any sense without __GFP_DIRECT_RECLAIM. Also I think it would be better to have a proper allocation flags in the initial patch which implements the fallback. > + } > + > page = __alloc_pages_nodemask(gfp_mask, order, > policy_node(gfp, pol, preferred_nid), > policy_nodemask(gfp, pol)); > -- > 2.7.4 > > -- Michal Hocko SUSE Labs