Mel Gorman
769848c038
Add __GFP_MOVABLE for callers to flag allocations from high memory that may be migrated
...
It is often known at allocation time whether a page may be migrated or not.
This patch adds a flag called __GFP_MOVABLE and a new mask called
GFP_HIGH_MOVABLE. Allocations using the __GFP_MOVABLE can be either migrated
using the page migration mechanism or reclaimed by syncing with backing
storage and discarding.
An API function very similar to alloc_zeroed_user_highpage() is added for
__GFP_MOVABLE allocations called alloc_zeroed_user_highpage_movable(). The
flags used by alloc_zeroed_user_highpage() are not changed because it would
change the semantics of an existing API. After this patch is applied there
are no in-kernel users of alloc_zeroed_user_highpage() so it probably should
be marked deprecated if this patch is merged.
Note that this patch includes a minor cleanup to the use of __GFP_ZERO in
shmem.c to keep all flag modifications to inode->mapping in the
shmem_dir_alloc() helper function. This clean-up suggestion is courtesy of
Hugh Dickens.
Additional credit goes to Christoph Lameter and Linus Torvalds for shaping the
concept. Credit to Hugh Dickens for catching issues with shmem swap vector
and ramfs allocations.
[akpm@linux-foundation.org: build fix]
[hugh@veritas.com: __GFP_ZERO cleanup]
Signed-off-by: Mel Gorman <mel@csn.ul.ie>
Cc: Andy Whitcroft <apw@shadowen.org>
Cc: Christoph Lameter <clameter@sgi.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2007-07-17 10:22:59 -07:00
..
mach-bigsmp
[PATCH] x86: default to physical mode on hotplug CPU kernels
2007-05-02 19:27:04 +02:00
mach-default
[PATCH] x86: default to physical mode on hotplug CPU kernels
2007-05-02 19:27:04 +02:00
mach-es7000
i386: es7000 build breakage fix
2007-07-06 10:23:43 -07:00
mach-generic
[PATCH] x86: default to physical mode on hotplug CPU kernels
2007-05-02 19:27:04 +02:00
mach-numaq
[PATCH] x86: default to physical mode on hotplug CPU kernels
2007-05-02 19:27:04 +02:00
mach-summit
[PATCH] x86: Log reason why TSC was marked unstable
2007-05-02 19:27:08 +02:00
mach-visws
[PATCH] x86: default to physical mode on hotplug CPU kernels
2007-05-02 19:27:04 +02:00
mach-voyager
[PATCH] clockevents: i386 drivers
2007-02-16 08:13:59 -08:00
8253pit.h
a.out.h
acpi.h
ACPI: cleanup: make disable_acpi() valid w/o CONFIG_ACPI
2007-02-13 00:09:13 -05:00
agp.h
[AGPGART] Move [un]map_page_into_agp into asm/agp.h
2007-04-26 14:22:50 -04:00
alternative-asm.i
Remove all inclusions of <linux/config.h>
2006-10-04 03:38:54 -04:00
alternative.h
i386: work around miscompilation of alternatives code
2007-05-11 08:29:32 -07:00
apic.h
[PATCH] i386: safe_apic_wait_icr_idle - i386
2007-05-02 19:27:17 +02:00
apicdef.h
arch_hooks.h
IRQ: Maintain regs pointer globally rather than passing to IRQ handlers
2006-10-05 15:10:12 +01:00
atomic.h
i386: fix early usage of atomic_add_return and local_add_return on real i386
2007-05-23 20:14:15 -07:00
auxvec.h
bitops.h
Fix misspellings collected by members of KJ list.
2007-05-09 07:14:03 +02:00
boot.h
include/asm-i386/boot.h: This is <asm/boot.h>, not <linux/boot.h>
2007-07-12 10:55:54 -07:00
bootparam.h
Make struct boot_params a real structure, and remove obsolete fields
2007-07-12 10:55:54 -07:00
bug.h
[PATCH] Generic BUG for i386
2006-12-08 08:28:39 -08:00
bugs.h
[PATCH] x86: update for i386 and x86-64 check_bugs
2007-05-02 19:27:16 +02:00
byteorder.h
cache.h
cacheflush.h
[PATCH] Optimize D-cache alias handling on fork
2006-12-13 09:27:08 -08:00
checksum.h
[NET]: I386 checksum annotations and cleanups.
2006-12-02 21:23:19 -08:00
cmpxchg.h
x86: create asm/cmpxchg.h
2007-05-08 11:15:20 -07:00
cpu.h
[PATCH] i386: introduce the mechanism of disabling cpu hotplug control
2006-12-07 02:14:10 +01:00
cpufeature.h
Use a new CPU feature word to cover features that are spread around
2007-07-12 10:55:54 -07:00
cputime.h
current.h
[PATCH] i386: Convert PDA into the percpu section
2007-05-02 19:27:16 +02:00
debugreg.h
delay.h
[PATCH] vmi: paravirt drop udelay op
2007-03-05 07:57:52 -08:00
desc.h
[PATCH] i386: Page-align the GDT
2007-05-02 19:27:15 +02:00
device.h
ACPI: Change ACPI to use dev_archdata instead of firmware_data
2006-12-01 14:52:01 -08:00
div64.h
[NET]: div64_64 consolidate (rev3)
2007-04-25 22:23:33 -07:00
dma-mapping.h
x86: Disable DAC on VIA bridges
2007-06-20 14:27:25 -07:00
dma.h
dmi.h
dwarf2.h
[PATCH] i386/x86-64: Work around gcc bug with noreturn functions in unwinder
2006-09-26 10:52:41 +02:00
e820.h
Make definitions for struct e820entry and struct e820map consistent
2007-07-12 10:55:54 -07:00
edac.h
elf.h
i386: sched.h inclusion from module.h is baack
2007-05-08 11:15:08 -07:00
emergency-restart.h
errno.h
fcntl.h
fixmap.h
serial: convert early_uart to earlycon for 8250
2007-07-16 09:05:35 -07:00
floppy.h
IRQ: Maintain regs pointer globally rather than passing to IRQ handlers
2006-10-05 15:10:12 +01:00
frame.i
Remove all inclusions of <linux/config.h>
2006-10-04 03:38:54 -04:00
futex.h
[PATCH] mm: pagefault_{disable,enable}()
2006-12-07 08:39:21 -08:00
genapic.h
[PATCH] x86: default to physical mode on hotplug CPU kernels
2007-05-02 19:27:04 +02:00
hardirq.h
highmem.h
[PATCH] i386: PARAVIRT: add kmap_atomic_pte for mapping highpte pages
2007-05-02 19:27:15 +02:00
hpet.h
[PATCH] x86: adjust inclusion of asm/fixmap.h
2007-05-02 19:27:04 +02:00
hw_irq.h
[PATCH] i386/x86_64: Remove global IO_APIC_VECTOR
2006-10-08 12:24:02 -07:00
hypertransport.h
[PATCH] Initial generic hypertransport interrupt support
2006-10-04 07:55:29 -07:00
i387.h
[PATCH] i386: avoid redundant preempt_disable in __unlazy_fpu
2007-05-02 19:27:21 +02:00
i8253.h
[PATCH] clockevents: i386 drivers
2007-02-16 08:13:59 -08:00
i8259.h
ide.h
fix jvc cdrom drive lockup
2007-07-16 09:05:40 -07:00
intel_arch_perfmon.h
[PATCH] x86: i386/x86-64 Add nmi watchdog support for new Intel CPUs
2006-09-26 10:52:27 +02:00
io.h
serial: convert early_uart to earlycon for 8250
2007-07-16 09:05:35 -07:00
io_apic.h
[PATCH] io_apic.h needs apicdef.h
2007-03-05 07:57:50 -08:00
ioctl.h
ioctls.h
tty: i386/x86_64 arbitary speed support
2007-05-08 11:15:03 -07:00
ipc.h
ipcbuf.h
irq.h
[PATCH] x86: revert x86_64-mm-fix-the-irqbalance-quirk-for-e7320-e7520-e7525
2007-05-02 19:27:04 +02:00
irq_regs.h
[PATCH] i386: Convert PDA into the percpu section
2007-05-02 19:27:16 +02:00
irqflags.h
[PATCH] i386: Use X86_EFLAGS_IF in irqflags.h.
2007-05-02 19:27:10 +02:00
ist.h
k8.h
Kbuild
[PATCH] x86: Clean up x86 control register and MSR macros (corrected)
2007-05-02 19:27:12 +02:00
kdebug.h
Revert "ipmi: add new IPMI nmi watchdog handling"
2007-05-14 15:24:24 -07:00
kexec.h
kdump/kexec: calculate note size at compile time
2007-05-08 11:15:07 -07:00
kmap_types.h
kprobes.h
[PATCH] IA64: kprobe invalidate icache of jump buffer
2006-07-31 13:28:38 -07:00
ldt.h
linkage.h
local.h
i386: fix early usage of atomic_add_return and local_add_return on real i386
2007-05-23 20:14:15 -07:00
math_emu.h
[PATCH] i386: PDA: Fix math emulator for new pt_regs
2006-12-07 02:14:03 +01:00
mc146818rtc.h
mca.h
mca_dma.h
[PATCH] kernel-doc for kernel/dma.c
2006-10-03 08:03:41 -07:00
mce.h
[PATCH] i386: Move mce_disabled to asm/mce.h
2007-02-13 13:26:26 +01:00
mman.h
mmu.h
mmu_context.h
[PATCH] x86: PARAVIRT: add hooks to intercept mm creation and destruction
2007-05-02 19:27:14 +02:00
mmx.h
mmzone.h
i386 mmzone: use __maybe_unused
2007-05-09 12:30:57 -07:00
module.h
[PATCH] i386: Add an option for the VIA C7 which sets appropriate L1 cache
2007-05-02 19:27:05 +02:00
mpspec.h
[PATCH] clockevents: i386 drivers
2007-02-16 08:13:59 -08:00
mpspec_def.h
[PATCH] x86-64: remove remaining pc98 code
2006-12-07 02:14:19 +01:00
msgbuf.h
msidef.h
[PATCH] genirq: i386 irq: Move msi message composition into io_apic.c
2006-10-04 07:55:28 -07:00
msr-index.h
[PATCH] i386: Enable support for fixed-range IORRs to keep RdMem & WrMem in sync
2007-05-02 19:27:17 +02:00
msr.h
i386: msr.h: be paranoid about types and parentheses
2007-05-09 12:49:33 -07:00
mtrr.h
[PATCH] x86: Save the MTRRs of the BSP before booting an AP
2007-05-02 19:27:17 +02:00
mutex.h
[PATCH] i386: Remove lock section support in mutex.h
2006-09-26 10:52:31 +02:00
namei.h
nmi.h
[PATCH] i386: Clean up NMI watchdog code
2007-05-02 19:27:20 +02:00
numa.h
numaq.h
page.h
Add __GFP_MOVABLE for callers to flag allocations from high memory that may be migrated
2007-07-17 10:22:59 -07:00
param.h
[PATCH] cleanup asm/setup.h userspace visibility
2006-12-07 08:39:46 -08:00
paravirt.h
fix nmi_watchdog=2 bootup hang
2007-06-25 14:54:52 -07:00
parport.h
pci-direct.h
pci.h
PCI: remove pci_dac_dma_... APIs
2007-07-11 16:02:11 -07:00
percpu.h
[PATCH] i386: Define per_cpu_offset
2007-05-02 19:27:16 +02:00
pgalloc.h
SLUB: i386 support
2007-05-12 11:26:22 -07:00
pgtable-2level-defs.h
[PATCH] i386: PARAVIRT: Allow paravirt backend to choose kernel PMD sharing
2007-05-02 19:27:13 +02:00
pgtable-2level.h
page table handling cleanup
2007-07-16 09:05:36 -07:00
pgtable-3level-defs.h
[PATCH] i386: PARAVIRT: Allow paravirt backend to choose kernel PMD sharing
2007-05-02 19:27:13 +02:00
pgtable-3level.h
page table handling cleanup
2007-07-16 09:05:36 -07:00
pgtable.h
mm: remove ptep_test_and_clear_dirty and ptep_clear_flush_dirty
2007-07-17 10:22:59 -07:00
poll.h
Consolidate asm/poll.h
2007-05-11 08:29:34 -07:00
posix_types.h
i386: improve and correct inline asm memory constraints
2006-07-08 15:24:18 -07:00
processor-flags.h
[PATCH] x86: Clean up x86 control register and MSR macros (corrected)
2007-05-02 19:27:12 +02:00
processor.h
make seccomp zerocost in schedule
2007-07-16 09:05:50 -07:00
ptrace-abi.h
[PATCH] Split i386 and x86_64 ptrace.h
2006-09-26 08:49:10 -07:00
ptrace.h
[PATCH] i386: Profile pc badness
2007-02-13 13:26:21 +01:00
reboot.h
[PATCH] i386: Add machine_ops interface to abstract halting and rebooting
2007-05-02 19:27:11 +02:00
reboot_fixups.h
[PATCH] i386: clean up mach_reboot_fixups
2007-05-02 19:27:06 +02:00
required-features.h
Use a new CPU feature word to cover features that are spread around
2007-07-12 10:55:54 -07:00
resource.h
rtc.h
rwlock.h
[PATCH] i386: Clean up spin/rwlocks
2006-09-26 10:52:32 +02:00
rwsem.h
[PATCH] lockdep: name some old style locks
2006-12-07 08:39:36 -08:00
scatterlist.h
PCI: scatterlist.h needs types.h
2007-05-02 19:02:34 -07:00
seccomp.h
sections.h
segment.h
[PATCH] i386: Fix UP gdt bugs
2007-05-02 19:27:16 +02:00
semaphore.h
[PATCH] i386: Use early clobbers for semaphores now
2006-09-27 14:39:51 -07:00
sembuf.h
serial.h
x86, serial: convert legacy COM ports to platform devices
2007-05-08 11:15:23 -07:00
setup.h
Make struct boot_params a real structure, and remove obsolete fields
2007-07-12 10:55:54 -07:00
shmbuf.h
shmparam.h
sigcontext.h
siginfo.h
signal.h
[PATCH] headers_check: move inclusion of <linux/linkage.h> in <asm-i386/signal.h>
2006-09-13 07:32:15 -07:00
smp.h
Use the APIC to determine the hardware processor id - i386
2007-05-09 12:30:48 -07:00
socket.h
[NET]: Adding SO_TIMESTAMPNS / SCM_TIMESTAMPNS support
2007-04-25 22:24:21 -07:00
sockios.h
[NET]: Introduce SIOCGSTAMPNS ioctl to get timestamps with nanosec resolution
2007-04-25 22:24:04 -07:00
sparsemem.h
spinlock.h
[PATCH] paravirt: Patch inline replacements for paravirt intercepts
2006-12-07 02:14:08 +01:00
spinlock_types.h
[PATCH] Remove 'volatile' from spinlock_types
2006-12-06 14:39:53 -08:00
srat.h
stacktrace.h
[PATCH] i386: Do stacktracer conversion too
2006-09-26 10:52:34 +02:00
stat.h
statfs.h
string.h
suspend.h
Merge branch 'for-linus' of git://one.firstfloor.org/home/andi/git/linux-2.6
2006-12-07 08:59:11 -08:00
sync_bitops.h
Fix misspellings collected by members of KJ list.
2007-05-09 07:14:03 +02:00
system.h
x86: create asm/cmpxchg.h
2007-05-08 11:15:20 -07:00
termbits.h
tty: i386/x86_64 arbitary speed support
2007-05-08 11:15:03 -07:00
termios.h
tty: i386/x86_64 arbitary speed support
2007-05-08 11:15:03 -07:00
therm_throt.h
[PATCH] x86: Add a cumulative thermal throttle event counter.
2006-09-26 10:52:42 +02:00
thread_info.h
make seccomp zerocost in schedule
2007-07-16 09:05:50 -07:00
time.h
[PATCH] vmi: pit override
2007-03-05 07:57:52 -08:00
timer.h
[PATCH] i386: pit_latch_buggy has no effect
2007-05-02 19:27:05 +02:00
timex.h
tlb.h
tlbflush.h
Detach sched.h from mm.h
2007-05-21 09:18:19 -07:00
topology.h
[PATCH] sched: remove SMT nice
2007-03-05 07:57:51 -08:00
tsc.h
i386: work around miscompilation of alternatives code
2007-05-11 08:29:32 -07:00
types.h
[PATCH] Centralise definitions of sector_t and blkcnt_t
2006-12-04 19:41:15 -08:00
uaccess.h
[PATCH] i386: Update __copy_to_user_inatomic linuxdoc description
2007-05-02 19:27:06 +02:00
ucontext.h
unaligned.h
unistd.h
signal/timer/event: eventfd wire up x86 arches
2007-05-11 08:29:37 -07:00
unwind.h
Remove stack unwinder for now
2006-12-15 08:47:51 -08:00
user.h
vga.h
vic.h
[VOYAGER] fix up ptregs removal mess
2006-10-12 22:25:03 -05:00
vm86.h
[PATCH] i386: Update sys_vm86 to cope with changed pt_regs and %gs usage
2006-12-07 02:14:03 +01:00
vmi.h
[PATCH] vmi: apic ops
2007-03-05 07:57:52 -08:00
vmi_time.h
[PATCH] i386: Convert VMI timer to use clock events
2007-05-02 19:27:16 +02:00
voyager.h
[VOYAGER] Convert the monitor thread to use the kthread API
2007-05-01 10:09:29 -05:00
xor.h