From: Michal Hocko <mhocko@suse.com>
To: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
Cc: akpm@linux-foundation.org, linux-mm@kvack.org,
David Rientjes <rientjes@google.com>,
Vlastimil Babka <vbabka@suse.cz>,
Hillf Danton <hillf.zj@alibaba-inc.com>,
Jesper Dangaard Brouer <brouer@redhat.com>,
Mel Gorman <mgorman@techsingularity.net>
Subject: Re: [PATCH] mm,page_alloc: apply gfp_allowed_mask before the first allocation attempt.
Date: Fri, 1 Sep 2017 16:28:45 +0200 [thread overview]
Message-ID: <20170901142845.nqcn2na4vy6giyhm@dhcp22.suse.cz> (raw)
In-Reply-To: <1504275091-4427-1-git-send-email-penguin-kernel@I-love.SAKURA.ne.jp>
On Fri 01-09-17 23:11:31, Tetsuo Handa wrote:
> We are by error initializing alloc_flags before gfp_allowed_mask is
> applied. Apply gfp_allowed_mask before initializing alloc_flags so that
> the first allocation attempt uses correct flags.
It would be worth noting that this will not matter in most cases,
actually when only the node reclaim is enabled we can misbehave because
NOFS request for PM paths would be ignored.
> Fixes: 9cd7555875bb09da ("mm, page_alloc: split alloc_pages_nodemask()")
AFAICS this patch hasn't changed the logic and it was broken since
83d4ca8148fd ("mm, page_alloc: move __GFP_HARDWALL modifications out of
the fastpath")
> Signed-off-by: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
> Cc: Mel Gorman <mgorman@techsingularity.net>
> Cc: Hillf Danton <hillf.zj@alibaba-inc.com>
> Cc: Vlastimil Babka <vbabka@suse.cz>
> Cc: Jesper Dangaard Brouer <brouer@redhat.com>
Other than that this looks correct to me.
Acked-by: Michal Hocko <mhocko@suse.com>
I wish we can finally get rid of gfp_allowed_mask. I have it on my todo
list but never got to it.
Thanks!
> ---
> mm/page_alloc.c | 3 ++-
> 1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/mm/page_alloc.c b/mm/page_alloc.c
> index 6dbc49e..a123dee 100644
> --- a/mm/page_alloc.c
> +++ b/mm/page_alloc.c
> @@ -4179,10 +4179,11 @@ struct page *
> {
> struct page *page;
> unsigned int alloc_flags = ALLOC_WMARK_LOW;
> - gfp_t alloc_mask = gfp_mask; /* The gfp_t that was actually used for allocation */
> + gfp_t alloc_mask; /* The gfp_t that was actually used for allocation */
> struct alloc_context ac = { };
>
> gfp_mask &= gfp_allowed_mask;
> + alloc_mask = gfp_mask;
> if (!prepare_alloc_pages(gfp_mask, order, preferred_nid, nodemask, &ac, &alloc_mask, &alloc_flags))
> return NULL;
>
> --
> 1.8.3.1
>
--
Michal Hocko
SUSE Labs
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
next prev parent reply other threads:[~2017-09-01 14:28 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-09-01 14:11 Tetsuo Handa
2017-09-01 14:28 ` Michal Hocko [this message]
2017-09-01 15:16 ` Tetsuo Handa
2017-09-04 8:22 ` Vlastimil Babka
2017-09-04 8:47 ` Michal Hocko
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20170901142845.nqcn2na4vy6giyhm@dhcp22.suse.cz \
--to=mhocko@suse.com \
--cc=akpm@linux-foundation.org \
--cc=brouer@redhat.com \
--cc=hillf.zj@alibaba-inc.com \
--cc=linux-mm@kvack.org \
--cc=mgorman@techsingularity.net \
--cc=penguin-kernel@I-love.SAKURA.ne.jp \
--cc=rientjes@google.com \
--cc=vbabka@suse.cz \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox