On Wed, 31 Oct 2012, Wen Congyang wrote:
From: Lai Jiangshan <laijs@xxxxxxxxxxxxxx>
is_valid_nodemask() is introduced by 19770b32. but it does not match
its comments, because it does not check the zone which > policy_zone.
Also in b377fd, this commits told us, if highest zone is ZONE_MOVABLE,
we should also apply memory policies to it. so ZONE_MOVABLE should be valid zone
for policies. is_valid_nodemask() need to be changed to match it.
Fix: check all zones, even its zoneid > policy_zone.
Use nodes_intersects() instead open code to check it.
This changes the semantics of MPOL_BIND to be considerably different than
what it is today: slab allocations are no longer bound by such a policy
which isn't consistent with what userspace expects or is specified by
set_mempolicy() and there's no way, with your patch, to actually specify
that we don't care about ZONE_MOVABLE and that the slab allocations
_should_ actually be allocated on movable-only zones. You have to respect
cases where people aren't interested in node hotplug and not cause a
regression.