Skip to content
  • David Rientjes's avatar
    mm, thp: really limit transparent hugepage allocation to local node · 5265047a
    David Rientjes authored
    Commit 077fcf11 ("mm/thp: allocate transparent hugepages on local
    node") restructured alloc_hugepage_vma() with the intent of only
    allocating transparent hugepages locally when there was not an effective
    interleave mempolicy.
    
    alloc_pages_exact_node() does not limit the allocation to the single node,
    however, but rather prefers it.  This is because __GFP_THISNODE is not set
    which would cause the node-local nodemask to be passed.  Without it, only
    a nodemask that prefers the local node is passed.
    
    Fix this by passing __GFP_THISNODE and falling back to small pages when
    the allocation fails.
    
    Commit 9f1b868a ("mm: thp: khugepaged: add policy for finding target
    node") suffers from a similar problem for khugepaged, which is also fixed.
    
    Fixes: 077fcf11 ("mm/thp: allocate transparent hugepages on local node")
    Fixes: 9f1b868a
    
     ("mm: thp: khugepaged: add policy for finding target node")
    Signed-off-by: default avatarDavid Rientjes <rientjes@google.com>
    Acked-by: default avatarVlastimil Babka <vbabka@suse.cz>
    Cc: Christoph Lameter <cl@linux.com>
    Cc: Pekka Enberg <penberg@kernel.org>
    Cc: Joonsoo Kim <iamjoonsoo.kim@lge.com>
    Cc: Johannes Weiner <hannes@cmpxchg.org>
    Cc: Mel Gorman <mgorman@suse.de>
    Cc: Pravin Shelar <pshelar@nicira.com>
    Cc: Jarno Rajahalme <jrajahalme@nicira.com>
    Cc: Li Zefan <lizefan@huawei.com>
    Cc: Greg Thelen <gthelen@google.com>
    Cc: Tejun Heo <tj@kernel.org>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    5265047a