Johannes Weiner
e97ca8e5b8
mm: fix GFP_THISNODE callers and clarify
...
GFP_THISNODE is for callers that implement their own clever fallback to
remote nodes. It restricts the allocation to the specified node and
does not invoke reclaim, assuming that the caller will take care of it
when the fallback fails, e.g. through a subsequent allocation request
without GFP_THISNODE set.
However, many current GFP_THISNODE users only want the node exclusive
aspect of the flag, without actually implementing their own fallback or
triggering reclaim if necessary. This results in things like page
migration failing prematurely even when there is easily reclaimable
memory available, unless kswapd happens to be running already or a
concurrent allocation attempt triggers the necessary reclaim.
Convert all callsites that don't implement their own fallback strategy
to __GFP_THISNODE. This restricts the allocation a single node too, but
at the same time allows the allocator to enter the slowpath, wake
kswapd, and invoke direct reclaim if necessary, to make the allocation
happen when memory is full.
Signed-off-by: Johannes Weiner <hannes@cmpxchg.org>
Acked-by: Rik van Riel <riel@redhat.com>
Cc: Jan Stancek <jstancek@redhat.com>
Cc: Mel Gorman <mgorman@suse.de>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2014-03-10 17:26:19 -07:00
..
spufs
new helper: dump_align()
2013-11-09 00:16:27 -05:00
axon_msi.c
powerpc/irqdomain: Fix broken NR_IRQ references
2012-04-30 10:45:26 +10:00
beat.c
powerpc: Rework set_dabr so it can take a DABRX value as well
2012-09-10 09:59:10 +10:00
beat.h
powerpc: Rework set_dabr so it can take a DABRX value as well
2012-09-10 09:59:10 +10:00
beat_htab.c
powerpc/mm: Use HPTE constants when updating hpte bits
2013-12-09 11:40:27 +11:00
beat_hvCall.S
powerpc: Merge STK_REG/PARAM/FRAMESIZE
2012-07-10 19:18:03 +10:00
beat_interrupt.c
irqdomain: Clean up aftermath of irq_domain refactoring
2013-06-10 11:52:09 +01:00
beat_interrupt.h
powerpc: Remove stubbed beat smp support
2011-05-19 15:30:59 +10:00
beat_iommu.c
powerpc/cell: Beat dma ops cleanup
2010-11-29 15:48:20 +11:00
beat_spu_priv1.c
powerpc: remove non-required uses of include <linux/module.h>
2011-10-31 19:30:44 -04:00
beat_syscall.h
[POWERPC] celleb: Move files for Beat hvcall interfaces
2008-04-24 21:08:13 +10:00
beat_udbg.c
powerpc/cell: Use correct types in beat files
2009-01-08 16:25:16 +11:00
beat_wrapper.h
powerpc: cell/beat_wrapper.h is implicitly using memcpy functions
2011-10-31 19:30:40 -04:00
cbe_powerbutton.c
powerpc: Fix up modules that should be including module.h
2011-10-31 19:30:38 -04:00
cbe_regs.c
powerpc: various straight conversions from module.h --> export.h
2011-10-31 19:30:44 -04:00
cbe_thermal.c
cpu: convert 'cpu' and 'machinecheck' sysdev_class to a regular subsystem
2011-12-21 14:29:42 -08:00
celleb_pci.c
bootmem: fix wrong call parameter for free_bootmem()
2012-12-11 17:22:28 -08:00
celleb_pci.h
powerpc/pci: Move IO workarounds to the common kernel dir
2011-04-27 14:18:29 +10:00
celleb_scc.h
[POWERPC] celleb: Add support for PCI Express
2008-04-24 21:08:14 +10:00
celleb_scc_epci.c
treewide: Convert uses of struct resource to resource_size(ptr)
2011-06-10 14:55:36 +02:00
celleb_scc_pciex.c
of/irq: Use irq_of_parse_and_map()
2013-10-24 11:50:35 +01:00
celleb_scc_sio.c
of/irq: simplify args to irq_create_of_mapping
2013-10-24 11:42:57 +01:00
celleb_scc_uhc.c
[POWERPC] celleb: Move the SCC related code for celleb
2008-04-24 21:08:13 +10:00
celleb_setup.c
powerpc: add export.h to files making use of EXPORT_SYMBOL
2011-10-31 19:30:37 -04:00
cpufreq_spudemand.c
workqueue: make deferrable delayed_work initializer names consistent
2012-08-21 13:18:23 -07:00
interrupt.c
irq_domain/powerpc: constify irq_domain_ops
2012-02-16 06:11:24 -07:00
interrupt.h
powerpc/cell: Rename ipi functions to match current abstractions
2011-05-26 13:38:58 +10:00
iommu.c
powerpc/iommu: Add it_page_shift field to determine iommu page size
2013-12-30 14:17:13 +11:00
Kconfig
cpufreq: powerpc/platforms/cell: move cpufreq driver to drivers/cpufreq
2013-04-10 13:19:26 +02:00
Makefile
cpufreq: powerpc/platforms/cell: move cpufreq driver to drivers/cpufreq
2013-04-10 13:19:26 +02:00
pervasive.c
powerpc: More fixes for lazy IRQ vs. idle
2012-07-10 19:16:07 +10:00
pervasive.h
powerpc/cell: Cleanup sysreset_hack for IBM cell blades
2008-07-22 10:39:31 +10:00
pmu.c
powerpc/cell: Only iterate over online nodes in cbe_init_pm_irq()
2013-04-24 14:22:30 +10:00
qpace_setup.c
powerpc: Mark const init data with __initconst instead of __initdata
2012-04-02 14:00:03 +10:00
ras.c
mm: fix GFP_THISNODE callers and clarify
2014-03-10 17:26:19 -07:00
ras.h
setup.c
POWERPC: drivers: remove __dev* attributes.
2013-01-03 15:57:04 -08:00
smp.c
powerpc: Convert platforms to smp_generic_cpu_bootable
2013-08-14 14:56:57 +10:00
spider-pci.c
powerpc/pci: Move IO workarounds to the common kernel dir
2011-04-27 14:18:29 +10:00
spider-pic.c
of/irq: Use irq_of_parse_and_map()
2013-10-24 11:50:35 +01:00
spu_base.c
powerpc/cell/spufs: Fix status attribute permission
2013-05-06 12:02:05 +10:00
spu_callbacks.c
powerpc: Convert print_symbol to %pSR
2013-01-10 17:01:16 +11:00
spu_fault.c
powerpc: various straight conversions from module.h --> export.h
2011-10-31 19:30:44 -04:00
spu_manage.c
of/irq: simplify args to irq_create_of_mapping
2013-10-24 11:42:57 +01:00
spu_notify.c
powerpc: fix implicit notifier use in converting to export.h
2011-10-31 19:30:41 -04:00
spu_priv1_mmio.c
powerpc: remove non-required uses of include <linux/module.h>
2011-10-31 19:30:44 -04:00
spu_priv1_mmio.h
spu_syscalls.c
switch elf_coredump_extra_notes_write() to dump_emit()
2013-11-09 00:16:24 -05:00