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

Reply via email to