linux/drivers/md
Mikulas Patocka bb91bc7bac dm io: flush cpu cache with vmapped io
For normal kernel pages, CPU cache is synchronized by the dma layer.
However, this is not done for pages allocated with vmalloc. If we do I/O
to/from vmallocated pages, we must synchronize CPU cache explicitly.

Prior to doing I/O on vmallocated page we must call
flush_kernel_vmap_range to flush dirty cache on the virtual address.
After finished read we must call invalidate_kernel_vmap_range to
invalidate cache on the virtual address, so that accesses to the virtual
address return newly read data and not stale data from CPU cache.

This patch fixes metadata corruption on dm-snapshots on PA-RISC and
possibly other architectures with caches indexed by virtual address.

Cc: stable <stable@kernel.org>
Signed-off-by: Mikulas Patocka <mpatocka@redhat.com>
Signed-off-by: Alasdair G Kergon <agk@redhat.com>
2011-08-02 12:32:01 +01:00
..
bitmap.c MD bitmap: Revert DM dirty log hooks 2011-07-27 11:00:37 +10:00
bitmap.h MD bitmap: Revert DM dirty log hooks 2011-07-27 11:00:37 +10:00
dm-bio-record.h
dm-crypt.c atomic: use <linux/atomic.h> 2011-07-26 16:49:47 -07:00
dm-delay.c
dm-exception-store.c
dm-exception-store.h
dm-flakey.c
dm-io.c dm io: flush cpu cache with vmapped io 2011-08-02 12:32:01 +01:00
dm-ioctl.c
dm-kcopyd.c atomic: use <linux/atomic.h> 2011-07-26 16:49:47 -07:00
dm-linear.c
dm-log-userspace-base.c
dm-log-userspace-transfer.c
dm-log-userspace-transfer.h
dm-log.c
dm-mpath.c dm mpath: fix potential NULL pointer in feature arg processing 2011-08-02 12:32:00 +01:00
dm-mpath.h
dm-path-selector.c
dm-path-selector.h
dm-queue-length.c atomic: use <linux/atomic.h> 2011-07-26 16:49:47 -07:00
dm-raid1.c dm kcopyd: return client directly and not through a pointer 2011-05-29 13:03:13 +01:00
dm-raid.c
dm-region-hash.c
dm-round-robin.c
dm-service-time.c
dm-snap-persistent.c dm snapshot: flush disk cache when merging 2011-08-02 12:32:00 +01:00
dm-snap-transient.c
dm-snap.c dm kcopyd: return client directly and not through a pointer 2011-05-29 13:03:13 +01:00
dm-stripe.c
dm-sysfs.c
dm-table.c atomic: use <linux/atomic.h> 2011-07-26 16:49:47 -07:00
dm-target.c
dm-uevent.c
dm-uevent.h
dm-zero.c
dm.c
dm.h
faulty.c
Kconfig
linear.c md,rcu: Convert call_rcu(free_conf) to kfree_rcu() 2011-07-20 11:05:29 -07:00
linear.h
Makefile
md.c Merge branch 'for-linus' of git://neil.brown.name/md 2011-07-28 05:50:27 -07:00
md.h md: make it easier to wait for bad blocks to be acknowledged. 2011-07-28 11:31:48 +10:00
multipath.c
multipath.h
raid0.c
raid0.h
raid1.c md/raid1: factor several functions out or raid1d() 2011-07-28 11:38:13 +10:00
raid1.h md/raid1: Handle write errors by updating badblock log. 2011-07-28 11:32:41 +10:00
raid5.c md/raid5: Clear bad blocks on successful write. 2011-07-28 11:39:23 +10:00
raid5.h md/raid5: Clear bad blocks on successful write. 2011-07-28 11:39:23 +10:00
raid10.c md/raid10: handle further errors during fix_read_error better. 2011-07-28 11:39:25 +10:00
raid10.h md/raid10: Handle write errors by updating badblock log. 2011-07-28 11:39:24 +10:00