• Joonsoo Kim's avatar
    mm/migrate: introduce a standard migration target allocation function · 19fc7bed
    Joonsoo Kim authored
    There are some similar functions for migration target allocation.  Since
    there is no fundamental difference, it's better to keep just one rather
    than keeping all variants.  This patch implements base migration target
    allocation function.  In the following patches, variants will be converted
    to use this function.
    
    Changes should be mechanical, but, unfortunately, there are some
    differences.  First, some callers' nodemask is assgined to NULL since NULL
    nodemask will be considered as all available nodes, that is,
    &node_states[N_MEMORY].  Second, for hugetlb page allocation, gfp_mask is
    redefined as regular hugetlb allocation gfp_mask plus __GFP_THISNODE if
    user provided gfp_mask has it.  This is because future caller of this
    function requires to set this node constaint.  Lastly, if provided nodeid
    is NUMA_NO_NODE, nodeid is set up to the node where migration source
    lives.  It helps to remove simple wrappers for setting up the nodeid.
    
    Note that PageHighmem() call in previous function is changed to open-code
    "is_highmem_idx()" since it provides more readability.
    
    [akpm@linux-foundation.org: tweak patch title, per Vlastimil]
    [akpm@linux-foundation.org: fix typo in comment]
    Signed-off-by: default avatarJoonsoo Kim <iamjoonsoo.kim@lge.com>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Acked-by: default avatarVlastimil Babka <vbabka@suse.cz>
    Acked-by: default avatarMichal Hocko <mhocko@suse.com>
    Cc: Christoph Hellwig <hch@infradead.org>
    Cc: Mike Kravetz <mike.kravetz@oracle.com>
    Cc: Naoya Horiguchi <n-horiguchi@ah.jp.nec.com>
    Cc: Roman Gushchin <guro@fb.com>
    Link: http://lkml.kernel.org/r/1594622517-20681-6-git-send-email-iamjoonsoo.kim@lge.comSigned-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    19fc7bed
internal.h 19.1 KB