OpenCloudOS-Kernel/drivers/md
NeilBrown 4274215d24 md: avoid endless recovery loop when waiting for fail device to complete.
If a device fails in a way that causes pending request to take a while
to complete, md will not be able to immediately remove it from the
array in remove_and_add_spares.
It will then incorrectly look like a spare device and md will try to
recover it even though it is failed.
This leads to a recovery process starting and instantly aborting over
and over again.

We should check if the device is faulty before considering it to be a
spare.  This will avoid trying to start a recovery that cannot
proceed.

This bug was introduced in 2.6.26 so that patch is suitable for any
kernel since then.

Cc: stable@kernel.org
Reported-by: Jim Paradis <james.paradis@stratus.com>
Signed-off-by: NeilBrown <neilb@suse.de>
2011-06-28 16:59:42 +10:00
..
Kconfig dm: add flakey target 2011-03-24 13:54:24 +00:00
Makefile dm: add flakey target 2011-03-24 13:54:24 +00:00
bitmap.c md/bitmap: remove unused fields from struct bitmap 2011-06-09 11:43:01 +10:00
bitmap.h md/bitmap: remove unused fields from struct bitmap 2011-06-09 11:43:01 +10:00
dm-bio-record.h dm: preserve bi_io_vec when resubmitting bios 2009-04-02 19:55:23 +01:00
dm-crypt.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/agk/linux-2.6-dm 2011-03-25 20:51:44 -07: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-flakey.c dm: add flakey target 2011-03-24 13:54:24 +00:00
dm-io.c dm io: use fixed initial mempool size 2011-05-29 13:03:09 +01:00
dm-ioctl.c dm ioctl: add flag to wipe buffers for secure data 2011-03-24 13:54:30 +00:00
dm-kcopyd.c dm kcopyd: return client directly and not through a pointer 2011-05-29 13:03:13 +01: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 netlink: kill eff_cap from struct netlink_skb_parms 2011-03-03 13:32:07 -08:00
dm-log-userspace-transfer.h dm log: userspace add luid to distinguish between concurrent log instances 2009-09-04 20:40:34 +01:00
dm-log.c dm io: use fixed initial mempool size 2011-05-29 13:03:09 +01:00
dm-mpath.c dm mpath: do not fail paths after integrity errors 2011-05-29 13:02:55 +01:00
dm-mpath.h dm mpath: remove is_active from struct dm_path 2008-10-10 13:36:58 +01:00
dm-path-selector.c dm: path selector use module refcount directly 2009-04-02 19:55:27 +01:00
dm-path-selector.h dm mpath: add start_io and nr_bytes to path selectors 2009-06-22 10:12:27 +01:00
dm-queue-length.c dm mpath: add queue length load balancer 2009-06-22 10:12:27 +01:00
dm-raid.c md/dm - remove remains of plug_fn callback. 2011-04-18 18:25:41 +10:00
dm-raid1.c dm kcopyd: return client directly and not through a pointer 2011-05-29 13:03:13 +01:00
dm-region-hash.c Fix common misspellings 2011-03-31 11:26:23 -03:00
dm-round-robin.c dm mpath: add start_io and nr_bytes to path selectors 2009-06-22 10:12:27 +01:00
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 io: use fixed initial mempool size 2011-05-29 13:03:09 +01:00
dm-snap-transient.c dm snapshot: move cow ref from exception store to snap core 2009-12-10 23:52:12 +00:00
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 stripe: implement merge method 2011-03-24 13:54:35 +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 dm table: reject devices without request fns 2011-05-29 13:02:52 +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 block: fix non-atomic access to genhd inflight structures 2011-03-22 08:35:35 +01:00
dm.h block: Require subsystems to explicitly allocate bio_set integrity mempool 2011-03-17 11:11:05 +01:00
faulty.c Fix common misspellings 2011-03-31 11:26:23 -03:00
linear.c block: Require subsystems to explicitly allocate bio_set integrity mempool 2011-03-17 11:11:05 +01:00
linear.h md/linear: use call_rcu to free obsolete 'conf' structures. 2009-06-18 08:49:42 +10:00
md.c md: avoid endless recovery loop when waiting for fail device to complete. 2011-06-28 16:59:42 +10:00
md.h MD: support initial bitmap creation in-kernel 2011-06-09 11:41:36 +10:00
multipath.c md: make error_handler functions more uniform and correct. 2011-05-11 14:38:44 +10:00
multipath.h md/multipath: discard ->working_disks in favour of ->degraded 2011-05-11 14:38:02 +10:00
raid0.c block: Require subsystems to explicitly allocate bio_set integrity mempool 2011-03-17 11:11:05 +01: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: raid1 changes to allow use by device mapper 2011-06-08 15:11:31 +10:00
raid1.h MD: raid1 changes to allow use by device mapper 2011-06-08 15:11:31 +10:00
raid5.c md/raid5: remove unusual use of bio_iovec_idx() 2011-06-14 14:23:57 +10:00
raid5.h md - remove old plugging code. 2011-04-18 18:25:42 +10:00
raid10.c md/raid10: reformat some loops with less indenting. 2011-05-11 14:54:41 +10:00
raid10.h Fix common misspellings 2011-03-31 11:26:23 -03:00