Krzysztof Wojcik
02214dc546
FIX: md: process hangs at wait_barrier after 0->10 takeover
...
Following symptoms were observed:
1. After raid0->raid10 takeover operation we have array with 2
missing disks.
When we add disk for rebuild, recovery process starts as expected
but it does not finish- it stops at about 90%, md126_resync process
hangs in "D" state.
2. Similar behavior is when we have mounted raid0 array and we
execute takeover to raid10. After this when we try to unmount array-
it causes process umount hangs in "D"
In scenarios above processes hang at the same function- wait_barrier
in raid10.c.
Process waits in macro "wait_event_lock_irq" until the
"!conf->barrier" condition will be true.
In scenarios above it never happens.
Reason was that at the end of level_store, after calling pers->run,
we call mddev_resume. This calls pers->quiesce(mddev, 0) with
RAID10, that calls lower_barrier.
However raise_barrier hadn't been called on that 'conf' yet,
so conf->barrier becomes negative, which is bad.
This patch introduces setting conf->barrier=1 after takeover
operation. It prevents to become barrier negative after call
lower_barrier().
Signed-off-by: Krzysztof Wojcik <krzysztof.wojcik@intel.com>
Signed-off-by: NeilBrown <neilb@suse.de>
2011-02-08 11:49:02 +11:00
..
bitmap.c
md: Don't let implementation detail of curr_resync leak out through sysfs.
2011-01-14 09:14:34 +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 crypt: add loop aes iv generator
2011-01-13 19:59:55 +00:00
dm-delay.c
dm: convert workqueues to alloc_ordered
2011-01-13 19:59:57 +00: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
dm ioctl: suppress needless warning messages
2011-01-13 19:59:55 +00:00
dm-kcopyd.c
dm: use non reentrant workqueues if equivalent
2011-01-13 19:59:58 +00: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: add version number to comms
2011-01-13 19:59:52 +00:00
dm-log-userspace-transfer.c
dm log userspace: add version number to comms
2011-01-13 19:59:52 +00:00
dm-log-userspace-transfer.h
dm-log.c
dm log: use PTR_ERR value instead of ENOMEM
2011-01-13 20:00:00 +00:00
dm-mpath.c
dm mpath: delay activate_path retry on SCSI_DH_RETRY
2011-01-13 20:00:01 +00:00
dm-mpath.h
dm-path-selector.c
dm-path-selector.h
dm-queue-length.c
dm-raid.c
dm: raid456 basic support
2011-01-13 20:00:02 +00:00
dm-raid1.c
dm: use non reentrant workqueues if equivalent
2011-01-13 19:59:58 +00: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
include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h
2010-03-30 22:02:32 +09:00
dm-snap-persistent.c
dm snapshot: persistent make metadata_wq multithreaded
2011-01-13 19:59:59 +00:00
dm-snap-transient.c
dm-snap.c
dm snapshot: avoid storing private suspended state
2011-01-13 19:59:59 +00:00
dm-stripe.c
dm stripe: switch from local workqueue to system_wq
2011-01-13 19:59:57 +00:00
dm-sysfs.c
Driver core: Constify struct sysfs_ops in struct kobj_type
2010-03-07 17:04:49 -08:00
dm-table.c
block: restore multiple bd_link_disk_holder() support
2011-01-14 18:44:22 +01:00
dm-target.c
dm: error return error for discards
2010-08-12 04:14:14 +01:00
dm-uevent.c
dm table: remove dm_get from dm_table_get_md
2010-03-06 02:29:52 +00:00
dm-uevent.h
dm-zero.c
dm: zero silently drop discards
2010-08-12 04:14:12 +01:00
dm.c
dm: remove superfluous irq disablement in dm_request_fn
2011-01-13 20:00:00 +00:00
dm.h
dm: linear support discard
2010-08-12 04:14:08 +01:00
faulty.c
md: use separate bio pool for each md device.
2010-10-28 17:36:15 +11:00
Kconfig
dm: raid456 basic support
2011-01-13 20:00:02 +00:00
linear.c
md: implment REQ_FLUSH/FUA support
2010-09-10 12:35:38 +02:00
linear.h
Makefile
dm: raid456 basic support
2011-01-13 20:00:02 +00:00
md.c
md_make_request: don't touch the bio after calling make_request
2011-02-08 09:53:28 +11:00
md.h
md: Remove the AllReserved flag for component devices.
2011-01-31 12:10:09 +11:00
multipath.c
md: implment REQ_FLUSH/FUA support
2010-09-10 12:35:38 +02:00
multipath.h
raid0.c
Add raid1->raid0 takeover support
2011-01-31 13:47:13 +11: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-new-param-to_sync_page_io
2011-01-14 09:14:33 +11:00
raid1.h
md/raid1: discard unused variable.
2010-10-29 16:40:33 +11:00
raid5.c
md: don't abort checking spares as soon as one cannot be added.
2011-01-31 11:57:43 +11:00
raid5.h
md: implment REQ_FLUSH/FUA support
2010-09-10 12:35:38 +02:00
raid10.c
FIX: md: process hangs at wait_barrier after 0->10 takeover
2011-02-08 11:49:02 +11:00
raid10.h
md: fix handling of array level takeover that re-arranges devices.
2010-06-24 13:33:24 +10:00