linux/include
David Rientjes d773ed6b85 mm: test and set zone reclaim lock before starting reclaim
Introduces new zone flag interface for testing and setting flags:

	int zone_test_and_set_flag(struct zone *zone, zone_flags_t flag)

Instead of setting and clearing ZONE_RECLAIM_LOCKED each time shrink_zone() is
called, this flag is test and set before starting zone reclaim.  Zone reclaim
starts in __alloc_pages() when a zone's watermark fails and the system is in
zone_reclaim_mode.  If it's already in reclaim, there's no need to start again
so it is simply considered full for that allocation attempt.

There is a change of behavior with regard to concurrent zone shrinking.  It is
now possible for try_to_free_pages() or kswapd to already be shrinking a
particular zone when __alloc_pages() starts zone reclaim.  In this case, it is
possible for two concurrent threads to invoke shrink_zone() for a single zone.

This change forbids a zone to be in zone reclaim twice, which was always the
behavior, but allows for concurrent try_to_free_pages() or kswapd shrinking
when starting zone reclaim.

Cc: Andrea Arcangeli <andrea@suse.de>
Cc: Christoph Lameter <clameter@sgi.com>
Signed-off-by: David Rientjes <rientjes@google.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2007-10-17 08:42:46 -07:00
..
acpi
asm-alpha alpha: beautify vmlinux.lds 2007-10-16 09:43:03 -07:00
asm-arm imxfb: fast read flag and nonstandard field configurable 2007-10-16 09:43:21 -07:00
asm-avr32 kprobes: support kretprobe blacklist 2007-10-16 09:43:10 -07:00
asm-blackfin bf54x-lq043fb: framebuffer driver for Blackfin BF54x framebuffer device driver 2007-10-16 09:43:20 -07:00
asm-cris
asm-frv include/asm-frv/thread_info.h: kmalloc + memset conversion to kzalloc 2007-10-16 09:43:03 -07:00
asm-generic flush icache before set_pte() on ia64: flush icache at set_pte 2007-10-16 09:42:59 -07:00
asm-h8300
asm-ia64 Merge branch 'for-linus' of git://git.kernel.dk/data/git/linux-2.6-block 2007-10-16 10:09:16 -07:00
asm-m32r m32r: convert to generic sys_ptrace 2007-10-16 09:43:04 -07:00
asm-m68k m68k: Export cachectl.h 2007-10-13 09:41:03 -07:00
asm-m68knommu M68KNOMMU: remove unused config symbol CONFIG_DISKtel 2007-10-16 09:43:03 -07:00
asm-mips Merge branch 'upstream' of git://ftp.linux-mips.org/pub/scm/upstream-linus 2007-10-16 10:44:35 -07:00
asm-parisc
asm-powerpc powerpc: add Altivec/VMX state to coredumps 2007-10-17 08:42:44 -07:00
asm-ppc
asm-s390 kprobes: support kretprobe blacklist 2007-10-16 09:43:10 -07:00
asm-sh x86: optimize page faults like all other achitectures and kill notifier cruft 2007-10-16 09:42:50 -07:00
asm-sh64 Merge git://git.kernel.org/pub/scm/linux/kernel/git/lethal/sh64-2.6 2007-10-13 09:50:26 -07:00
asm-sparc SPARC: sg chaining support 2007-10-16 11:27:32 +02:00
asm-sparc64 Merge branch 'for-linus' of git://git.kernel.dk/data/git/linux-2.6-block 2007-10-16 10:09:16 -07:00
asm-um uml: style fixes in FP code 2007-10-16 09:43:07 -07:00
asm-v850
asm-x86 Slab API: remove useless ctor parameter and reorder parameters 2007-10-17 08:42:45 -07:00
asm-xtensa
crypto [CRYPTO] sha: Add header file for SHA definitions 2007-10-10 16:55:50 -07:00
keys
linux mm: test and set zone reclaim lock before starting reclaim 2007-10-17 08:42:46 -07:00
math-emu
media v4l: copy_to_user() is not a good method name 2007-10-13 09:58:59 -07:00
mtd
net [IPV6]: Replace sk_buff ** with sk_buff * in input handlers 2007-10-15 12:50:28 -07:00
pcmcia pcmcia: use DMA_MASK_NONE for the default for all pcmcia devices 2007-10-16 09:42:50 -07:00
rdma
rxrpc
scsi remove sglist_len 2007-10-16 11:24:44 +02:00
sound [ALSA] version 1.0.15 2007-10-16 16:57:46 +02:00
video pm2fb: hardware cursor support for the Permedia2 2007-10-16 09:43:18 -07:00
xen
Kbuild