1
linux/include
Fengguang Wu fe3cba17c4 mm: share PG_readahead and PG_reclaim
Share the same page flag bit for PG_readahead and PG_reclaim.

One is used only on file reads, another is only for emergency writes.  One
is used mostly for fresh/young pages, another is for old pages.

Combinations of possible interactions are:

a) clear PG_reclaim => implicit clear of PG_readahead
	it will delay an asynchronous readahead into a synchronous one
	it actually does _good_ for readahead:
		the pages will be reclaimed soon, it's readahead thrashing!
		in this case, synchronous readahead makes more sense.

b) clear PG_readahead => implicit clear of PG_reclaim
	one(and only one) page will not be reclaimed in time
	it can be avoided by checking PageWriteback(page) in readahead first

c) set PG_reclaim => implicit set of PG_readahead
	will confuse readahead and make it restart the size rampup process
	it's a trivial problem, and can mostly be avoided by checking
	PageWriteback(page) first in readahead

d) set PG_readahead => implicit set of PG_reclaim
	PG_readahead will never be set on already cached pages.
	PG_reclaim will always be cleared on dirtying a page.
	so not a problem.

In summary,
	a)   we get better behavior
	b,d) possible interactions can be avoided
	c)   racy condition exists that might affect readahead, but the chance
	     is _really_ low, and the hurt on readahead is trivial.

Compound pages also use PG_reclaim, but for now they do not interact with
reclaim/readahead code.

Signed-off-by: Fengguang Wu <wfg@mail.ustc.edu.cn>
Cc: Rusty Russell <rusty@rustcorp.com.au>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2007-07-19 10:04:44 -07:00
..
acpi Pull osi-now into release branch 2007-06-02 01:02:09 -04:00
asm-alpha alpha termios.h hadn't been updated 2007-07-17 11:01:07 -07:00
asm-arm fbdev: detect primary display device 2007-07-17 10:23:11 -07:00
asm-arm26 fbdev: detect primary display device 2007-07-17 10:23:11 -07:00
asm-avr32 [AVR32] Fix atomic_add_unless() and atomic_sub_unless() 2007-07-18 20:47:04 +02:00
asm-blackfin fbdev: detect primary display device 2007-07-17 10:23:11 -07:00
asm-cris fbdev: detect primary display device 2007-07-17 10:23:11 -07:00
asm-frv fbdev: detect primary display device 2007-07-17 10:23:11 -07:00
asm-generic saner typechecking in generic unaligned.h 2007-07-17 11:01:07 -07:00
asm-h8300 fbdev: detect primary display device 2007-07-17 10:23:11 -07:00
asm-i386 Merge branch 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4 2007-07-18 10:32:00 -07:00
asm-ia64 Merge branch 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6 2007-07-17 11:31:57 -07:00
asm-m32r fbdev: detect primary display device 2007-07-17 10:23:11 -07:00
asm-m68k fbdev: detect primary display device 2007-07-17 10:23:11 -07:00
asm-m68knommu fbdev: detect primary display device 2007-07-17 10:23:11 -07:00
asm-mips zs: move to the serial subsystem 2007-07-18 08:38:22 -07:00
asm-parisc fbdev: detect primary display device 2007-07-17 10:23:11 -07:00
asm-powerpc sys_fallocate() implementation on i386, x86_64 and powerpc 2007-07-17 21:42:44 -04:00
asm-ppc mm: remove ptep_test_and_clear_dirty and ptep_clear_flush_dirty 2007-07-17 10:22:59 -07:00
asm-s390 fbdev: detect primary display device 2007-07-17 10:23:11 -07:00
asm-sh fbdev: detect primary display device 2007-07-17 10:23:11 -07:00
asm-sh64 fbdev: detect primary display device 2007-07-17 10:23:11 -07:00
asm-sparc fbdev: detect primary display device 2007-07-17 10:23:11 -07:00
asm-sparc64 [SPARC]: Mark sparc and sparc64 as not having virt_to_bus 2007-07-18 01:20:22 -07:00
asm-um Add generic exit-time stack-depth checking to CONFIG_DEBUG_STACK_USAGE 2007-07-16 09:05:38 -07:00
asm-v850 fbdev: detect primary display device 2007-07-17 10:23:11 -07:00
asm-x86_64 sys_fallocate() implementation on i386, x86_64 and powerpc 2007-07-17 21:42:44 -04:00
asm-xtensa fbdev: detect primary display device 2007-07-17 10:23:11 -07:00
crypto
keys
linux mm: share PG_readahead and PG_reclaim 2007-07-19 10:04:44 -07:00
math-emu
media V4L/DVB (5835): saa7146/dvb-ttpci: Fix signedness warnings (gcc 4.1.1, kernel 2.6.22) 2007-07-18 14:24:44 -03:00
mtd UBI: kill homegrown endian macros 2007-07-18 16:53:49 +03:00
net [XFRM]: Fix crash introduced by struct dst_entry reordering 2007-07-18 01:55:52 -07:00
pcmcia PCMCIA-NETDEV : add new ID of lan&modem multifunction card 2007-07-08 22:16:39 -04:00
rdma IB/cm: Include HCA ACK delay in local ACK timeout 2007-07-10 21:50:05 -07:00
rxrpc
scsi [SCSI] Remove unused method scsi_device_cancel 2007-07-14 16:01:16 -05:00
sound [ALSA] version 1.0.14 2007-05-31 11:03:27 +02:00
video tgafb: actually allocate memory for the pseudo_palette 2007-07-17 10:23:12 -07:00
xen xen: Place vcpu_info structure into per-cpu memory 2007-07-18 08:47:45 -07:00
Kbuild