• Vladimir Davydov's avatar
    slub: fix cpuset check in get_any_partial · dee2f8aa
    Vladimir Davydov authored
    If we fail to allocate from the current node's stock, we look for free
    objects on other nodes before calling the page allocator (see
    get_any_partial).  While checking other nodes we respect cpuset
    constraints by calling cpuset_zone_allowed.  We enforce hardwall check.
    As a result, we will fallback to the page allocator even if there are some
    pages cached on other nodes, but the current cpuset doesn't have them set.
     However, the page allocator uses softwall check for kernel allocations,
    so it may allocate from one of the other nodes in this case.
    
    Therefore we should use softwall cpuset check in get_any_partial to
    conform with the cpuset check in the page allocator.
    Signed-off-by: default avatarVladimir Davydov <vdavydov@parallels.com>
    Acked-by: default avatarZefan Li <lizefan@huawei.com>
    Acked-by: default avatarChristoph Lameter <cl@linux.com>
    Cc: Pekka Enberg <penberg@kernel.org>
    Cc: David Rientjes <rientjes@google.com>
    Cc: Joonsoo Kim <iamjoonsoo.kim@lge.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>
    dee2f8aa
slub.c 125 KB