From: Li Zhong <zhong@linux.vnet.ibm.com>
To: David Rientjes <rientjes@google.com>
Cc: Vlastimil Babka <vbabka@suse.cz>, Michal Hocko <mhocko@suse.cz>,
linux-mm <linux-mm@kvack.org>,
jallen@linux.vnet.ibm.com, qiuxishi@huawei.com,
iamjoonsoo.kim@lge.com, n-horiguchi@ah.jp.nec.com,
Andrew Morton <akpm@linux-foundation.org>,
Tetsuo Handa <penguin-kernel@i-love.sakura.ne.jp>
Subject: [PATCH] mem-hotplug: Use nodes that contain memory as mask in new_node_page()
Date: Wed, 21 Sep 2016 16:38:37 +0800 [thread overview]
Message-ID: <1474447117.28370.6.camel@TP420> (raw)
In-Reply-To: <alpine.DEB.2.10.1609201413210.84794@chino.kir.corp.google.com>
Commit 9bb627be47a5 ("mem-hotplug: don't clear the only node in
new_node_page()") prevents allocating from an empty nodemask, but as David
points out, it is still wrong. As node_online_map may include memoryless
nodes, only allocating from these nodes is meaningless.
This patch uses node_states[N_MEMORY] mask to prevent the above case.
Signed-off-by: Li Zhong <zhong@linux.vnet.ibm.com>
---
mm/memory_hotplug.c | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/mm/memory_hotplug.c b/mm/memory_hotplug.c
index b58906b..9d29ba0 100644
--- a/mm/memory_hotplug.c
+++ b/mm/memory_hotplug.c
@@ -1555,8 +1555,8 @@ static struct page *new_node_page(struct page *page, unsigned long private,
{
gfp_t gfp_mask = GFP_USER | __GFP_MOVABLE;
int nid = page_to_nid(page);
- nodemask_t nmask = node_online_map;
- struct page *new_page;
+ nodemask_t nmask = node_states[N_MEMORY];
+ struct page *new_page = NULL;
/*
* TODO: allocate a destination hugepage from a nearest neighbor node,
@@ -1567,14 +1567,14 @@ static struct page *new_node_page(struct page *page, unsigned long private,
return alloc_huge_page_node(page_hstate(compound_head(page)),
next_node_in(nid, nmask));
- if (nid != next_node_in(nid, nmask))
- node_clear(nid, nmask);
+ node_clear(nid, nmask);
if (PageHighMem(page)
|| (zone_idx(page_zone(page)) == ZONE_MOVABLE))
gfp_mask |= __GFP_HIGHMEM;
- new_page = __alloc_pages_nodemask(gfp_mask, 0,
+ if (!nodes_empty(nmask))
+ new_page = __alloc_pages_nodemask(gfp_mask, 0,
node_zonelist(nid, gfp_mask), &nmask);
if (!new_page)
new_page = __alloc_pages(gfp_mask, 0,
--
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:[~2016-09-21 8:38 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-09-05 2:59 [PATCH] mem-hotplug: Don't clear the only node in new_node_page() Li Zhong
2016-09-05 14:18 ` Vlastimil Babka
2016-09-06 8:13 ` Li Zhong
2016-09-06 14:12 ` Vlastimil Babka
2016-09-07 0:41 ` [PATCH] mm, page_alloc: warn about empty nodemask Li Zhong
2016-09-08 23:26 ` Andrew Morton
2016-09-09 4:03 ` Li Zhong
2016-09-20 8:27 ` Vlastimil Babka
2016-09-12 9:18 ` [PATCH] mem-hotplug: Don't clear the only node in new_node_page() Michal Hocko
2016-09-20 8:31 ` Vlastimil Babka
2016-09-20 21:53 ` David Rientjes
2016-09-21 2:11 ` Li Zhong
2016-09-21 8:38 ` Li Zhong [this message]
2016-09-21 9:34 ` [PATCH] mem-hotplug: Use nodes that contain memory as mask " Vlastimil Babka
2016-09-21 18:14 ` Michal Hocko
2016-09-21 18:08 ` [PATCH] mem-hotplug: Don't clear the only node " Michal Hocko
2016-09-06 13:16 ` Xishi Qiu
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=1474447117.28370.6.camel@TP420 \
--to=zhong@linux.vnet.ibm.com \
--cc=akpm@linux-foundation.org \
--cc=iamjoonsoo.kim@lge.com \
--cc=jallen@linux.vnet.ibm.com \
--cc=linux-mm@kvack.org \
--cc=mhocko@suse.cz \
--cc=n-horiguchi@ah.jp.nec.com \
--cc=penguin-kernel@i-love.sakura.ne.jp \
--cc=qiuxishi@huawei.com \
--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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.