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
..
.gitignore
[IA64] Cleanup generated file not ignored by .gitignore
2008-08-04 11:06:16 -07:00
acpi-ext.c
include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h
2010-03-30 22:02:32 +09:00
acpi.c
ACPI and power management updates for 3.14-rc1
2014-01-24 15:51:02 -08:00
asm-offsets.c
ia64/xen: Remove Xen support for ia64
2013-12-10 16:11:07 -08:00
audit.c
[IA64] Remove COMPAT_IA32 support
2010-02-08 10:42:17 -08:00
brl_emu.c
crash.c
sysctl: Drop & in front of every proc_handler.
2009-11-18 08:37:40 -08:00
crash_dump.c
crash_dump: export is_kdump_kernel to modules, consolidate elfcorehdr_addr, setup_elfcorehdr and saved_max_pfn
2011-03-23 19:47:19 -07:00
cyclone.c
ia64: Replace clocksource.fsys_mmio with generic arch data
2011-07-14 17:57:09 -07:00
dma-mapping.c
ia64: Add export.h to arch/ia64 specific files as required
2011-10-31 19:30:58 -04:00
efi.c
efi: x86: ia64: provide a generic efi_config_init()
2013-09-05 13:29:29 +01:00
efi_stub.S
elfcore.c
switch elf_core_write_extra_data() to dump_emit()
2013-11-09 00:16:23 -05:00
entry.h
entry.S
[IA64] Wire up new sched_setattr and sched_getattr syscalls
2014-01-28 09:52:53 -08:00
err_inject.c
[IA64] Delete __cpuinit usage from all ia64 users
2013-06-24 15:44:27 -07:00
esi.c
tree-wide: fix assorted typos all over the place
2009-12-04 15:39:55 +01:00
esi_stub.S
fsys.S
Fix broken fsys_getppid()
2013-03-19 16:14:52 -07:00
fsyscall_gtod_data.h
ia64: vsyscall: Use seqcount instead of seqlock
2012-03-15 18:17:59 -07:00
ftrace.c
ftrace, ia64: IA64 dynamic ftrace support
2009-01-14 12:11:31 +01:00
gate-data.S
Rename .data.gate to .data..gate.
2010-03-03 11:25:59 +01:00
gate.lds.S
Disintegrate asm/system.h for IA64
2012-03-28 18:30:02 +01:00
gate.S
Disintegrate asm/system.h for IA64
2012-03-28 18:30:02 +01:00
head.S
ia64/xen: Remove Xen support for ia64
2013-12-10 16:11:07 -08:00
ia64_ksyms.c
treewide: Put a space between #include and FILE
2012-06-28 11:44:36 +02:00
init_task.c
Rename .data.init_task to .data..init_task.
2010-03-03 11:25:58 +01:00
iosapic.c
Fix kexec oops when iosapic was removed
2013-03-19 16:14:53 -07:00
irq.c
Fix initialization of CMCI/CMCP interrupts
2013-04-02 09:37:06 -07:00
irq_ia64.c
random: remove rand_initialize_irq()
2012-07-19 10:38:32 -04:00
irq_lsapic.c
ia64: Convert lsapic to new irq_chip functions
2011-03-29 14:48:02 +02:00
ivt.S
cputime: Generic on-demand virtual cputime accounting
2013-01-27 19:23:27 +01:00
jprobes.S
[IA64] Move include/asm-ia64 to arch/ia64/include/asm
2008-08-01 10:21:21 -07:00
kprobes.c
doc: typo on word accounting in kprobes.c in mutliple architectures
2013-10-14 15:46:39 +02:00
machine_kexec.c
[IA64] kexec: Move the dereference below the NULL test
2012-09-10 14:31:23 -07:00
machvec.c
Disintegrate asm/system.h for IA64
2012-03-28 18:30:02 +01:00
Makefile
cpufreq: ia64: move cpufreq driver to drivers/cpufreq
2013-04-10 13:19:25 +02:00
Makefile.gate
Rename .data.gate to .data..gate.
2010-03-03 11:25:59 +01:00
mca.c
[IA64] Delete __cpuinit usage from all ia64 users
2013-06-24 15:44:27 -07:00
mca_asm.S
percpu: make percpu symbols in ia64 unique
2009-10-29 22:34:14 +09:00
mca_drv.c
Remove cast for kmalloc return value
2013-03-19 16:14:53 -07:00
mca_drv.h
mca_drv_asm.S
minstate.h
cputime: Generic on-demand virtual cputime accounting
2013-01-27 19:23:27 +01:00
module.c
modules: make arch's use default loader hooks
2011-07-24 22:06:04 +09:30
msi_ia64.c
arch/ia64: remove references to cpu_*_map
2012-03-28 17:14:36 -07:00
nr-irqs.c
ia64/xen: Remove Xen support for ia64
2013-12-10 16:11:07 -08:00
numa.c
[IA64] Delete __cpuinit usage from all ia64 users
2013-06-24 15:44:27 -07:00
pal.S
palinfo.c
[IA64] Delete __cpuinit usage from all ia64 users
2013-06-24 15:44:27 -07:00
paravirt.c
static keys: Introduce 'struct static_key', static_key_true()/false() and static_key_slow_[inc|dec]()
2012-02-24 10:05:59 +01:00
paravirt_inst.h
ia64/xen: Remove Xen support for ia64
2013-12-10 16:11:07 -08:00
paravirt_patch.c
ia64/pv_op/binarypatch: add helper functions to support binary patching for paravirt_ops.
2009-03-26 11:02:31 -07:00
paravirt_patchlist.c
[IA64] Fix build error in paravirt_patchlist.c
2009-06-17 09:04:40 -07:00
paravirt_patchlist.h
ia64/xen: Remove Xen support for ia64
2013-12-10 16:11:07 -08:00
paravirtentry.S
Rename .data.read_mostly to .data..read_mostly.
2010-03-03 11:26:00 +01:00
patch.c
Disintegrate asm/system.h for IA64
2012-03-28 18:30:02 +01:00
pci-dma.c
[IA64] pci: Remove unused fallback_dev
2013-06-03 16:04:31 -07:00
pci-swiotlb.c
X86 & IA64: adapt for dma_map_ops changes
2012-03-28 16:36:31 +02:00
perfmon.c
consolidate simple ->d_delete() instances
2013-11-15 22:04:17 -05:00
perfmon_default_smpl.c
Fix common misspellings
2011-03-31 11:26:23 -03:00
perfmon_generic.h
perfmon_itanium.h
perfmon_mckinley.h
perfmon_montecito.h
process.c
dump_stack: unify debug information printed by show_regs()
2013-04-30 17:04:02 -07:00
ptrace.c
ia64: kill thread_matches(), unexport ptrace_check_attach()
2013-01-20 12:26:05 -08:00
relocate_kernel.S
percpu: make percpu symbols in ia64 unique
2009-10-29 22:34:14 +09:00
sal.c
[IA64] Update check_sal_cache_flush to use platform_send_ipi()
2008-06-11 16:40:33 -07:00
salinfo.c
[IA64] Delete __cpuinit usage from all ia64 users
2013-06-24 15:44:27 -07:00
setup.c
DMI: Parse memory device (type 17) in SMBIOS
2013-10-23 10:10:12 -07:00
sigframe.h
signal.c
constify copy_siginfo_to_user{,32}()
2013-11-09 00:16:29 -05:00
smp.c
Merge branch 'akpm' (Andrew's patch-bomb)
2012-03-28 17:19:28 -07:00
smpboot.c
[IA64] Delete __cpuinit usage from all ia64 users
2013-06-24 15:44:27 -07:00
stacktrace.c
[IA64] Add CONFIG_STACKTRACE_SUPPORT
2010-09-23 13:52:07 -07:00
sys_ia64.c
mm: use vm_unmapped_area() on ia64 architecture
2013-02-22 13:46:59 -08:00
time.c
kvm: Prepare to add generic guest entry/exit callbacks
2013-01-27 20:35:40 +01:00
topology.c
[IA64] Delete __cpuinit usage from all ia64 users
2013-06-24 15:44:27 -07:00
traps.c
[IA64] Fix trap #45 handling
2013-06-03 15:47:42 -07:00
unaligned.c
[IA64] use __ratelimit
2010-05-18 14:45:54 -07:00
uncached.c
mm: fix GFP_THISNODE callers and clarify
2014-03-10 17:26:19 -07:00
unwind.c
Disintegrate asm/system.h for IA64
2012-03-28 18:30:02 +01:00
unwind_decoder.c
unwind_i.h
vmlinux.lds.S
ia64/xen: Remove Xen support for ia64
2013-12-10 16:11:07 -08:00