linux/include
Ken Chen 767193253b [PATCH] simplify shmem_aops.set_page_dirty() method
shmem backed file does not have page writeback, nor it participates in
backing device's dirty or writeback accounting.  So using generic
__set_page_dirty_nobuffers() for its .set_page_dirty aops method is a bit
overkill.  It unnecessarily prolongs shm unmap latency.

For example, on a densely populated large shm segment (sevearl GBs), the
unmapping operation becomes painfully long.  Because at unmap, kernel
transfers dirty bit in PTE into page struct and to the radix tree tag.  The
operation of tagging the radix tree is particularly expensive because it
has to traverse the tree from the root to the leaf node on every dirty
page.  What's bothering is that radix tree tag is used for page write back.
 However, shmem is memory backed and there is no page write back for such
file system.  And in the end, we spend all that time tagging radix tree and
none of that fancy tagging will be used.  So let's simplify it by introduce
a new aops __set_page_dirty_no_writeback and this will speed up shm unmap.

Signed-off-by: Ken Chen <kenchen@google.com>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Cc: Hugh Dickins <hugh@veritas.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2007-02-11 10:51:19 -08:00
..
acpi Pull sysfs into test branch 2007-02-03 01:14:35 -05:00
asm-alpha [PATCH] Remove final references to deprecated "MAP_ANON" page protection flag 2007-02-11 10:51:17 -08:00
asm-arm Merge branch 'upstream' of git://ftp.linux-mips.org/pub/scm/upstream-apm 2007-02-09 09:44:28 -08:00
asm-arm26 [PATCH] Optimize D-cache alias handling on fork 2006-12-13 09:27:08 -08:00
asm-avr32 [AVR32] ssize_t should be long, not int 2007-02-09 15:01:59 +01:00
asm-cris [PATCH] kill eth_io_copy_and_sum() 2007-02-09 09:14:07 -08:00
asm-frv [PATCH] fix frv headers_check 2007-02-01 16:17:05 -08:00
asm-generic [PATCH] typeof __page_to_pfn with SPARSEMEM=y 2007-02-11 10:51:17 -08:00
asm-h8300 [PATCH] Optimize D-cache alias handling on fork 2006-12-13 09:27:08 -08:00
asm-i386 [PATCH] kill eth_io_copy_and_sum() 2007-02-09 09:14:07 -08:00
asm-ia64 Merge master.kernel.org:/pub/scm/linux/kernel/git/gregkh/pci-2.6 2007-02-07 19:23:44 -08:00
asm-m32r [PATCH] Optimize D-cache alias handling on fork 2006-12-13 09:27:08 -08:00
asm-m68k [PATCH] m68k: uaccess.h needs sched.h 2007-01-30 08:26:45 -08:00
asm-m68knommu [PATCH] m68knommu: removed include of system.h from bitops 2007-02-09 10:45:33 -08:00
asm-mips [PATCH] Remove final references to deprecated "MAP_ANON" page protection flag 2007-02-11 10:51:17 -08:00
asm-parisc [PATCH] Remove final references to deprecated "MAP_ANON" page protection flag 2007-02-11 10:51:17 -08:00
asm-powerpc [POWERPC] Add mpc52xx/lite5200 PCI support 2007-02-08 15:29:22 +11:00
asm-ppc [PATCH] kill eth_io_copy_and_sum() 2007-02-09 09:14:07 -08:00
asm-s390 [S390] Mark kernel text section read-only. 2007-02-05 21:18:41 +01:00
asm-sh [APM] SH: Convert to use shared APM emulation. 2007-02-09 17:08:58 +00:00
asm-sh64 [PATCH] Optimize D-cache alias handling on fork 2006-12-13 09:27:08 -08:00
asm-sparc [SPARC32]: Fix over-optimization by GCC near ip_fast_csum. 2007-02-01 20:24:35 -08:00
asm-sparc64 [SPARC64]: Fix of_iounmap() region release. 2006-12-31 14:06:05 -08:00
asm-um [PATCH] uml-i386: fix build breakage with CONFIG_HIGHMEM 2007-02-01 16:17:06 -08:00
asm-v850 [PATCH] Optimize D-cache alias handling on fork 2006-12-13 09:27:08 -08:00
asm-x86_64 [PATCH] x86_64 ia32 vDSO: use install_special_mapping 2007-02-09 09:25:47 -08:00
asm-xtensa [PATCH] Remove final references to deprecated "MAP_ANON" page protection flag 2007-02-11 10:51:17 -08:00
crypto [CRYPTO] api: Allow multiple frontends per backend 2007-02-07 09:21:01 +11:00
keys
linux [PATCH] simplify shmem_aops.set_page_dirty() method 2007-02-11 10:51:19 -08:00
math-emu
media V4L/DVB (5001): Add two required headers on kernel 2.6.20-rc1 2006-12-27 14:20:46 -02:00
mtd
net [NET]: change layout of ehash table 2007-02-08 14:16:46 -08:00
pcmcia Driver core: convert pcmcia code to use struct device 2007-02-07 10:37:11 -08:00
rdma IB: Make sure struct ib_user_mad.data is aligned 2007-02-04 14:11:56 -08:00
rxrpc
scsi [PATCH] iscsi endianness annotations 2007-02-09 09:14:07 -08:00
sound [PATCH] Fix breakage with CONFIG_SYSFS_DEPRECATED 2007-02-09 16:25:48 +01:00
video [PATCH] sstfb: add sysfs interface 2006-12-13 09:05:55 -08:00
Kbuild