OpenCloudOS-Kernel/include
NeilBrown d785a06a0b [PATCH] md/bitmap: change md/bitmap file handling to use bmap to file blocks
If md is asked to store a bitmap in a file, it tries to hold onto the page
cache pages for that file, manipulate them directly, and call a cocktail of
operations to write the file out.  I don't believe this is a supportable
approach.

This patch changes the approach to use the same approach as swap files.  i.e.
bmap is used to enumerate all the block address of parts of the file and we
write directly to those blocks of the device.

swapfile only uses parts of the file that provide a full pages at contiguous
addresses.  We don't have that luxury so we have to cope with pages that are
non-contiguous in storage.  To handle this we attach buffers to each page, and
store the addresses in those buffers.

With this approach the pagecache may contain data which is inconsistent with
what is on disk.  To alleviate the problems this can cause, md invalidates the
pagecache when releasing the file.  If the file is to be examined while the
array is active (a non-critical but occasionally useful function), O_DIRECT io
must be used.  And new version of mdadm will have support for this.

This approach simplifies a lot of code:
 - we no longer need to keep a list of pages which we need to wait for,
   as the b_endio function can keep track of how many outstanding
   writes there are.  This saves a mempool.
 - -EAGAIN returns from write_page are no longer possible (not sure if
    they ever were actually).

Signed-off-by: Neil Brown <neilb@suse.de>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2006-06-26 09:58:38 -07:00
..
acpi Merge branch 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux-acpi-2.6 2006-06-23 07:52:36 -07:00
asm-alpha [PATCH] random: remove SA_SAMPLE_RANDOM from floppy driver 2006-06-25 10:01:00 -07:00
asm-arm [PATCH] backlight: LOCOMO Backlight Driver updates 2006-06-26 09:58:28 -07:00
asm-arm26 [PATCH] random: remove SA_SAMPLE_RANDOM from floppy driver 2006-06-25 10:01:00 -07:00
asm-cris Remove unneeded _syscallX macros from user view in asm-*/unistd.h 2006-04-29 01:51:47 +01:00
asm-frv [PATCH] frv: clean frv unistd.h 2006-06-23 07:42:55 -07:00
asm-generic [PATCH] introduce WARN_ON_ONCE(cond) 2006-06-25 10:01:11 -07:00
asm-h8300 [PATCH] adjust handle_IRR_event() return type 2006-06-23 07:43:08 -07:00
asm-i386 [PATCH] Notify page fault call chain 2006-06-26 09:58:22 -07:00
asm-ia64 [PATCH] Notify page fault call chain 2006-06-26 09:58:22 -07:00
asm-m32r [PATCH] vgacon: make VGA_MAP_MEM take size, remove extra use 2006-06-22 15:05:58 -07:00
asm-m68k [PATCH] m68k: convert VME irq code 2006-06-25 10:00:58 -07:00
asm-m68knommu [PATCH] m68knommu: make enable_irq() macro statement 2006-06-25 21:04:24 -07:00
asm-mips [PATCH] N32 sigset and __COMPAT_ENDIAN_SWAP__ 2006-06-25 10:01:15 -07:00
asm-parisc [PATCH] random: remove SA_SAMPLE_RANDOM from floppy driver 2006-06-25 10:01:00 -07:00
asm-powerpc [PATCH] Notify page fault call chain 2006-06-26 09:58:22 -07:00
asm-ppc [PATCH] random: remove SA_SAMPLE_RANDOM from floppy driver 2006-06-25 10:01:00 -07:00
asm-s390 [PATCH] Define __raw_get_cpu_var and use it 2006-06-25 10:01:01 -07:00
asm-sh [PATCH] random: remove SA_SAMPLE_RANDOM from floppy driver 2006-06-25 10:01:00 -07:00
asm-sh64 Remove unneeded _syscallX macros from user view in asm-*/unistd.h 2006-04-29 01:51:47 +01:00
asm-sparc [SBUS]: Rewrite and plug into of_device framework. 2006-06-23 23:15:50 -07:00
asm-sparc64 [PATCH] Notify page fault call chain 2006-06-26 09:58:22 -07:00
asm-um Merge git://git.infradead.org/hdrcleanup-2.6 2006-06-20 15:10:08 -07:00
asm-v850 [PATCH] adjust handle_IRR_event() return type 2006-06-23 07:43:08 -07:00
asm-x86_64 [PATCH] Notify page fault call chain 2006-06-26 09:58:22 -07:00
asm-xtensa [PATCH] xtensa: remove verify_area macros 2006-06-23 07:43:02 -07:00
keys [PATCH] keys: discard the contents of a key on revocation 2006-06-26 09:58:18 -07:00
linux [PATCH] md/bitmap: change md/bitmap file handling to use bmap to file blocks 2006-06-26 09:58:38 -07:00
math-emu
media V4L/DVB (4205): Merge tda9887 module into tuner. 2006-06-25 02:05:24 -03:00
mtd Merge git://git.infradead.org/hdrcleanup-2.6 2006-06-20 15:10:08 -07:00
net [NET]: fix net-core kernel-doc 2006-06-23 02:07:42 -07:00
pcmcia Don't include linux/config.h from anywhere else in include/ 2006-04-26 12:56:16 +01:00
rdma IB/uverbs: Don't serialize with ib_uverbs_idr_mutex 2006-06-17 20:44:49 -07:00
rxrpc
scsi Merge branch 'master' into upstream 2006-06-22 22:11:56 -04:00
sound V4L/DVB (4210b): git-dvb: tea575x-tuner build fix 2006-06-25 02:05:25 -03:00
video Don't include linux/config.h from anywhere else in include/ 2006-04-26 12:56:16 +01:00