cpuset: simplify cpuset_node_allowed API
authorVladimir Davydov <vdavydov@parallels.com>
Mon, 20 Oct 2014 11:50:30 +0000 (15:50 +0400)
committerTejun Heo <tj@kernel.org>
Mon, 27 Oct 2014 15:15:27 +0000 (11:15 -0400)
commit344736f29b359790facd0b7a521e367f1715c11c
treec32487de22e7640a828f28819b5707790ede5105
parent8447a0fee974433f7e0035fd30e1edecf00e014f
cpuset: simplify cpuset_node_allowed API

Current cpuset API for checking if a zone/node is allowed to allocate
from looks rather awkward. We have hardwall and softwall versions of
cpuset_node_allowed with the softwall version doing literally the same
as the hardwall version if __GFP_HARDWALL is passed to it in gfp flags.
If it isn't, the softwall version may check the given node against the
enclosing hardwall cpuset, which it needs to take the callback lock to
do.

Such a distinction was introduced by commit 02a0e53d8227 ("cpuset:
rework cpuset_zone_allowed api"). Before, we had the only version with
the __GFP_HARDWALL flag determining its behavior. The purpose of the
commit was to avoid sleep-in-atomic bugs when someone would mistakenly
call the function without the __GFP_HARDWALL flag for an atomic
allocation. The suffixes introduced were intended to make the callers
think before using the function.

However, since the callback lock was converted from mutex to spinlock by
the previous patch, the softwall check function cannot sleep, and these
precautions are no longer necessary.

So let's simplify the API back to the single check.

Suggested-by: David Rientjes <rientjes@google.com>
Signed-off-by: Vladimir Davydov <vdavydov@parallels.com>
Acked-by: Christoph Lameter <cl@linux.com>
Acked-by: Zefan Li <lizefan@huawei.com>
Signed-off-by: Tejun Heo <tj@kernel.org>
include/linux/cpuset.h
kernel/cpuset.c
mm/hugetlb.c
mm/oom_kill.c
mm/page_alloc.c
mm/slab.c
mm/slub.c
mm/vmscan.c