linux/net/openvswitch
David Rientjes 4167e9b2cf mm: remove GFP_THISNODE
NOTE: this is not about __GFP_THISNODE, this is only about GFP_THISNODE.

GFP_THISNODE is a secret combination of gfp bits that have different
behavior than expected.  It is a combination of __GFP_THISNODE,
__GFP_NORETRY, and __GFP_NOWARN and is special-cased in the page
allocator slowpath to fail without trying reclaim even though it may be
used in combination with __GFP_WAIT.

An example of the problem this creates: commit e97ca8e5b8 ("mm: fix
GFP_THISNODE callers and clarify") fixed up many users of GFP_THISNODE
that really just wanted __GFP_THISNODE.  The problem doesn't end there,
however, because even it was a no-op for alloc_misplaced_dst_page(),
which also sets __GFP_NORETRY and __GFP_NOWARN, and
migrate_misplaced_transhuge_page(), where __GFP_NORETRY and __GFP_NOWAIT
is set in GFP_TRANSHUGE.  Converting GFP_THISNODE to __GFP_THISNODE is a
no-op in these cases since the page allocator special-cases
__GFP_THISNODE && __GFP_NORETRY && __GFP_NOWARN.

It's time to just remove GFP_THISNODE entirely.  We leave __GFP_THISNODE
to restrict an allocation to a local node, but remove GFP_THISNODE and
its obscurity.  Instead, we require that a caller clear __GFP_WAIT if it
wants to avoid reclaim.

This allows the aforementioned functions to actually reclaim as they
should.  It also enables any future callers that want to do
__GFP_THISNODE but also __GFP_NORETRY && __GFP_NOWARN to reclaim.  The
rule is simple: if you don't want to reclaim, then don't set __GFP_WAIT.

Aside: ovs_flow_stats_update() really wants to avoid reclaim as well, so
it is unchanged.

Signed-off-by: David Rientjes <rientjes@google.com>
Acked-by: Vlastimil Babka <vbabka@suse.cz>
Cc: Christoph Lameter <cl@linux.com>
Acked-by: Pekka Enberg <penberg@kernel.org>
Cc: Joonsoo Kim <iamjoonsoo.kim@lge.com>
Acked-by: 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: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2015-04-14 16:49:03 -07:00
..
actions.c net: openvswitch: Support masked set actions. 2015-02-07 22:40:17 -08:00
datapath.c openvswitch: Fix net exit. 2015-02-20 15:32:08 -05:00
datapath.h openvswitch: Add support for OVS_FLOW_ATTR_PROBE. 2014-11-09 18:58:44 -08:00
dp_notify.c genetlink: make multicast groups const, prevent abuse 2013-11-19 16:39:06 -05:00
flow.c mm: remove GFP_THISNODE 2015-04-14 16:49:03 -07:00
flow.h openvswitch: Add support for unique flow IDs. 2015-01-26 15:45:50 -08:00
flow_netlink.c openvswitch: Fix serialization of non-masked set actions. 2015-03-03 14:38:57 -05:00
flow_netlink.h openvswitch: Add support for unique flow IDs. 2015-01-26 15:45:50 -08:00
flow_table.c openvswitch: Initialize unmasked key and uid len 2015-02-08 00:51:14 -08:00
flow_table.h openvswitch: Add support for unique flow IDs. 2015-01-26 15:45:50 -08:00
Kconfig openvswitch: Fix build failure. 2014-11-14 01:24:27 -05:00
Makefile ovs: Turn vports with dependencies into separate modules 2014-10-28 14:43:18 -04:00
vport-geneve.c openvswitch: Add support for checksums on UDP tunnels. 2015-01-28 23:04:15 -08:00
vport-gre.c openvswitch: Introduce ovs_tunnel_route_lookup 2015-01-14 16:32:06 -05:00
vport-internal_dev.c openvswitch: Drop packets when interdev is not up 2014-11-05 23:52:35 -08:00
vport-internal_dev.h openvswitch: introduce rtnl ops stub 2014-07-01 14:40:17 -07:00
vport-netdev.c openvswitch: Constify various function arguments 2014-11-09 18:58:44 -08:00
vport-netdev.h ovs: Turn vports with dependencies into separate modules 2014-10-28 14:43:18 -04:00
vport-vxlan.c openvswitch: Only set TUNNEL_VXLAN_OPT if VXLAN-GBP metadata is set 2015-02-09 14:25:52 -08:00
vport-vxlan.h openvswitch: Support VXLAN Group Policy extension 2015-01-15 01:11:41 -05:00
vport.c openvswitch: Return vport module ref before destruction 2015-03-31 15:59:50 -04:00
vport.h openvswitch: Fix net exit. 2015-02-20 15:32:08 -05:00