All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] mem-hotplug: Don't clear the only node in new_node_page()
@ 2016-09-05  2:59 Li Zhong
  2016-09-05 14:18 ` Vlastimil Babka
  2016-09-06 13:16 ` Xishi Qiu
  0 siblings, 2 replies; 17+ messages in thread
From: Li Zhong @ 2016-09-05  2:59 UTC (permalink / raw)
  To: linux-mm
  Cc: jallen, qiuxishi, iamjoonsoo.kim, vbabka, n-horiguchi, rientjes,
	Andrew Morton

Commit 394e31d2c introduced new_node_page() for memory hotplug. 

In new_node_page(), the nid is cleared before calling __alloc_pages_nodemask().
But if it is the only node of the system, and the first round allocation fails,
it will not be able to get memory from an empty nodemask, and trigger oom. 

The patch checks whether it is the last node on the system, and if it is, then
don't clear the nid in the nodemask.

Reported-by: John Allen <jallen@linux.vnet.ibm.com>
Signed-off-by: Li Zhong <zhong@linux.vnet.ibm.com>
---
 mm/memory_hotplug.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/mm/memory_hotplug.c b/mm/memory_hotplug.c
index 41266dc..b58906b 100644
--- a/mm/memory_hotplug.c
+++ b/mm/memory_hotplug.c
@@ -1567,7 +1567,9 @@ 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));
 
-	node_clear(nid, nmask);
+	if (nid != next_node_in(nid, nmask))
+		node_clear(nid, nmask);
+
 	if (PageHighMem(page)
 	    || (zone_idx(page_zone(page)) == ZONE_MOVABLE))
 		gfp_mask |= __GFP_HIGHMEM;



--
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>

^ permalink raw reply related	[flat|nested] 17+ messages in thread

end of thread, other threads:[~2016-09-21 18:15 UTC | newest]

Thread overview: 17+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
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         ` [PATCH] mem-hotplug: Use nodes that contain memory as mask " Li Zhong
2016-09-21  9:34           ` 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

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.