@@ -1555,8 +1555,8 @@ static struct page *new_node_page(struct page *page, unsigned long private,
1555
1555
{
1556
1556
gfp_t gfp_mask = GFP_USER | __GFP_MOVABLE ;
1557
1557
int nid = page_to_nid (page );
1558
- nodemask_t nmask = node_online_map ;
1559
- struct page * new_page ;
1558
+ nodemask_t nmask = node_states [ N_MEMORY ] ;
1559
+ struct page * new_page = NULL ;
1560
1560
1561
1561
/*
1562
1562
* 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,
1567
1567
return alloc_huge_page_node (page_hstate (compound_head (page )),
1568
1568
next_node_in (nid , nmask ));
1569
1569
1570
- if (nid != next_node_in (nid , nmask ))
1571
- node_clear (nid , nmask );
1570
+ node_clear (nid , nmask );
1572
1571
1573
1572
if (PageHighMem (page )
1574
1573
|| (zone_idx (page_zone (page )) == ZONE_MOVABLE ))
1575
1574
gfp_mask |= __GFP_HIGHMEM ;
1576
1575
1577
- new_page = __alloc_pages_nodemask (gfp_mask , 0 ,
1576
+ if (!nodes_empty (nmask ))
1577
+ new_page = __alloc_pages_nodemask (gfp_mask , 0 ,
1578
1578
node_zonelist (nid , gfp_mask ), & nmask );
1579
1579
if (!new_page )
1580
1580
new_page = __alloc_pages (gfp_mask , 0 ,
0 commit comments