OpenCloudOS-Kernel/include
Linus Torvalds fba2591bf4 VM: Remove "clear_page_dirty()" and "test_clear_page_dirty()" functions
They were horribly easy to mis-use because of their tempting naming, and
they also did way more than any users of them generally wanted them to
do.

A dirty page can become clean under two circumstances:

 (a) when we write it out.  We have "clear_page_dirty_for_io()" for
     this, and that function remains unchanged.

     In the "for IO" case it is not sufficient to just clear the dirty
     bit, you also have to mark the page as being under writeback etc.

 (b) when we actually remove a page due to it becoming inaccessible to
     users, notably because it was truncate()'d away or the file (or
     metadata) no longer exists, and we thus want to cancel any
     outstanding dirty state.

For the (b) case, we now introduce "cancel_dirty_page()", which only
touches the page state itself, and verifies that the page is not mapped
(since cancelling writes on a mapped page would be actively wrong as it
is still accessible to users).

Some filesystems need to be fixed up for this: CIFS, FUSE, JFS,
ReiserFS, XFS all use the old confusing functions, and will be fixed
separately in subsequent commits (with some of them just removing the
offending logic, and others using clear_page_dirty_for_io()).

This was confirmed by Martin Michlmayr to fix the apt database
corruption on ARM.

Cc: Martin Michlmayr <tbm@cyrius.com>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Cc: Hugh Dickins <hugh@veritas.com>
Cc: Nick Piggin <nickpiggin@yahoo.com.au>
Cc: Arjan van de Ven <arjan@infradead.org>
Cc: Andrei Popa <andrei.popa@i-neo.ro>
Cc: Andrew Morton <akpm@osdl.org>
Cc: Dave Kleikamp <shaggy@linux.vnet.ibm.com>
Cc: Gordon Farquharson <gordonfarquharson@gmail.com>
Cc: Martin Schwidefsky <schwidefsky@de.ibm.com>
Cc: Trond Myklebust <trond.myklebust@fys.uio.no>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2006-12-21 09:19:57 -08:00
..
acpi [PATCH] slab: remove kmem_cache_t 2006-12-07 08:39:25 -08:00
asm-alpha [PATCH] Optimize D-cache alias handling on fork 2006-12-13 09:27:08 -08:00
asm-arm [ARM] 4057/1: ixp23xx: unconditionally enable hardware coherency 2006-12-18 00:14:59 +00:00
asm-arm26 [PATCH] Optimize D-cache alias handling on fork 2006-12-13 09:27:08 -08:00
asm-avr32 [PATCH] Optimize D-cache alias handling on fork 2006-12-13 09:27:08 -08:00
asm-cris [PATCH] Optimize D-cache alias handling on fork 2006-12-13 09:27:08 -08:00
asm-frv [PATCH] Optimize D-cache alias handling on fork 2006-12-13 09:27:08 -08:00
asm-generic PCI: Fix multiple problems with VIA hardware 2006-12-20 10:54:43 -08:00
asm-h8300 [PATCH] Optimize D-cache alias handling on fork 2006-12-13 09:27:08 -08:00
asm-i386 Remove stack unwinder for now 2006-12-15 08:47:51 -08:00
asm-ia64 Merge branch 'release' of master.kernel.org:/home/ftp/pub/scm/linux/kernel/git/aegl/linux-2.6 2006-12-13 15:57:58 -08:00
asm-m32r [PATCH] Optimize D-cache alias handling on fork 2006-12-13 09:27:08 -08:00
asm-m68k [PATCH] Optimize D-cache alias handling on fork 2006-12-13 09:27:08 -08:00
asm-m68knommu [PATCH] Optimize D-cache alias handling on fork 2006-12-13 09:27:08 -08:00
asm-mips [PATCH] Optimize D-cache alias handling on fork 2006-12-13 09:27:08 -08:00
asm-parisc [PATCH] Optimize D-cache alias handling on fork 2006-12-13 09:27:08 -08:00
asm-powerpc [POWERPC] cell: add forward struct declarations to spu.h 2006-12-19 15:35:36 +01:00
asm-ppc Merge branch 'for_paulus' of master.kernel.org:/pub/scm/linux/kernel/git/galak/powerpc 2006-12-11 16:31:42 +11:00
asm-s390 [S390] Fix reboot hang on LPARs 2006-12-15 17:18:22 +01:00
asm-sh [PATCH] Optimize D-cache alias handling on fork 2006-12-13 09:27:08 -08:00
asm-sh64 [PATCH] Optimize D-cache alias handling on fork 2006-12-13 09:27:08 -08:00
asm-sparc [SPARC]: Make bitops use same spinlocks as atomics. 2006-12-17 16:18:47 -08:00
asm-sparc64 [SPARC64]: Mirror x86_64's PERCPU_ENOUGH_ROOM definition. 2006-12-17 14:06:59 -08:00
asm-um [PATCH] UML: add generic BUG support 2006-12-08 08:28:39 -08:00
asm-v850 [PATCH] Optimize D-cache alias handling on fork 2006-12-13 09:27:08 -08:00
asm-x86_64 Remove stack unwinder for now 2006-12-15 08:47:51 -08:00
asm-xtensa [PATCH] Optimize D-cache alias handling on fork 2006-12-13 09:27:08 -08:00
crypto [CRYPTO] lib: table driven multiplications in GF(2^128) 2006-12-06 18:38:55 -08:00
keys
linux VM: Remove "clear_page_dirty()" and "test_clear_page_dirty()" functions 2006-12-21 09:19:57 -08:00
math-emu
media V4L/DVB (4935): Added the capability of selecting fm gain by tuner 2006-12-10 09:05:52 -02:00
mtd Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6 2006-10-01 17:55:53 +01:00
net [AX.25]: Fix unchecked rose_add_loopback_neigh uses 2006-12-17 21:59:14 -08:00
pcmcia [PATCH] pcmcia: multifunction card handling fixes 2006-12-04 20:09:15 -05:00
rdma IB: Fix ib_dma_alloc_coherent() wrapper 2006-12-15 13:57:26 -08:00
rxrpc
scsi [PATCH] slab: remove kmem_cache_t 2006-12-07 08:39:25 -08:00
sound [ALSA] version 1.0.14rc1 2006-12-20 09:11:55 +01:00
video [PATCH] sstfb: add sysfs interface 2006-12-13 09:05:55 -08:00
Kbuild [HEADERS] One line per header in Kbuild files to reduce conflicts 2006-09-19 12:43:58 +01:00