NeilBrown
4e78064f42
md: Fix possible deadlock with multiple mempool allocations.
...
It is not safe to allocate from a mempool while holding an item
previously allocated from that mempool as that can deadlock when the
mempool is close to exhaustion.
So don't use a bio list to collect the bios to write to multiple
devices in raid1 and raid10.
Instead queue each bio as it becomes available so an unplug will
activate all previously allocated bios and so a new bio has a chance
of being allocated.
This means we must set the 'remaining' count to '1' before submitting
any requests, then when all are submitted, decrement 'remaining' and
possible handle the write completion at that point.
Reported-by: Torsten Kaiser <just.for.lkml@googlemail.com>
Tested-by: Torsten Kaiser <just.for.lkml@googlemail.com>
Signed-off-by: NeilBrown <neilb@suse.de>
2010-10-28 17:34:07 +11:00
..
bitmap.c
md: use sector_t in bitmap_get_counter
2010-10-28 17:32:26 +11:00
bitmap.h
md: use sector_t in bitmap_get_counter
2010-10-28 17:32:26 +11:00
dm-bio-record.h
dm-crypt.c
dm: implement REQ_FLUSH/FUA support for bio-based dm
2010-09-10 12:35:38 +02:00
dm-delay.c
dm delay: support discard
2010-08-12 04:14:13 +01:00
dm-exception-store.c
dm snapshot: test chunk size against both origin and snapshot
2010-08-12 04:13:51 +01:00
dm-exception-store.h
dm snapshot: test chunk size against both origin and snapshot
2010-08-12 04:13:51 +01:00
dm-io.c
dm: implement REQ_FLUSH/FUA support for bio-based dm
2010-09-10 12:35:38 +02:00
dm-ioctl.c
llseek: automatically add .llseek fop
2010-10-15 15:53:27 +02:00
dm-kcopyd.c
block: unify flags for struct bio and struct request
2010-08-07 18:20:39 +02:00
dm-linear.c
dm: use dm_target_offset macro
2010-08-12 04:14:11 +01:00
dm-log-userspace-base.c
dm-log-userspace-transfer.c
dm-log-userspace-transfer.h
dm-log.c
dm: implement REQ_FLUSH/FUA support for bio-based dm
2010-09-10 12:35:38 +02:00
dm-mpath.c
dm mpath: support discard
2010-08-12 04:14:32 +01:00
dm-mpath.h
dm-path-selector.c
dm-path-selector.h
dm-queue-length.c
dm-raid1.c
dm: implement REQ_FLUSH/FUA support for bio-based dm
2010-09-10 12:35:38 +02:00
dm-region-hash.c
dm: implement REQ_FLUSH/FUA support for bio-based dm
2010-09-10 12:35:38 +02:00
dm-round-robin.c
dm-service-time.c
dm-snap-persistent.c
workqueues: s/ON_STACK/ONSTACK/
2010-10-26 16:52:14 -07:00
dm-snap-transient.c
dm-snap.c
Merge branch 'for-2.6.37/barrier' of git://git.kernel.dk/linux-2.6-block
2010-10-22 17:07:18 -07:00
dm-stripe.c
dm: implement REQ_FLUSH/FUA support for bio-based dm
2010-09-10 12:35:38 +02:00
dm-sysfs.c
dm-table.c
Consolidate min_not_zero
2010-09-10 20:07:38 +02:00
dm-target.c
dm: error return error for discards
2010-08-12 04:14:14 +01:00
dm-uevent.c
dm-uevent.h
dm-zero.c
dm: zero silently drop discards
2010-08-12 04:14:12 +01:00
dm.c
Merge branch 'for-2.6.37/barrier' of git://git.kernel.dk/linux-2.6-block
2010-10-22 17:07:18 -07:00
dm.h
dm: linear support discard
2010-08-12 04:14:08 +01:00
faulty.c
Kconfig
Merge branch 'async' of macbook:git/btrfs-unstable
2010-08-09 10:36:44 +01:00
linear.c
md: implment REQ_FLUSH/FUA support
2010-09-10 12:35:38 +02:00
linear.h
Makefile
Merge branch 'async' of macbook:git/btrfs-unstable
2010-08-09 10:36:44 +01:00
md.c
md: fix and update workqueue usage
2010-10-28 17:32:29 +11:00
md.h
Merge branch 'v2.6.36-rc8' into for-2.6.37/barrier
2010-10-19 09:13:04 +02:00
multipath.c
md: implment REQ_FLUSH/FUA support
2010-09-10 12:35:38 +02:00
multipath.h
raid0.c
md: implment REQ_FLUSH/FUA support
2010-09-10 12:35:38 +02:00
raid0.h
md: fix handling of array level takeover that re-arranges devices.
2010-06-24 13:33:24 +10:00
raid1.c
md: Fix possible deadlock with multiple mempool allocations.
2010-10-28 17:34:07 +11:00
raid1.h
md: implment REQ_FLUSH/FUA support
2010-09-10 12:35:38 +02:00
raid5.c
md: use sector_t in bitmap_get_counter
2010-10-28 17:32:26 +11:00
raid5.h
md: implment REQ_FLUSH/FUA support
2010-09-10 12:35:38 +02:00
raid10.c
md: Fix possible deadlock with multiple mempool allocations.
2010-10-28 17:34:07 +11:00
raid10.h
md: fix handling of array level takeover that re-arranges devices.
2010-06-24 13:33:24 +10:00