diff options
author | Shaohua Li <shli@fb.com> | 2016-02-25 16:24:42 -0800 |
---|---|---|
committer | Shaohua Li <shli@fb.com> | 2016-02-26 09:44:56 -0800 |
commit | 6ab2a4b806ae21b6c3e47c5ff1285ec06d505325 (patch) | |
tree | 881693ece12cd8ce147f1a370370eb60928120b0 /drivers/md/faulty.c | |
parent | 27a353c026a879a1001e5eac4bda75b16262c44a (diff) |
RAID5: revert e9e4c377e2f563 to fix a livelock
Revert commit
e9e4c377e2f563(md/raid5: per hash value and exclusive wait_for_stripe)
The problem is raid5_get_active_stripe waits on
conf->wait_for_stripe[hash]. Assume hash is 0. My test release stripes
in this order:
- release all stripes with hash 0
- raid5_get_active_stripe still sleeps since active_stripes >
max_nr_stripes * 3 / 4
- release all stripes with hash other than 0. active_stripes becomes 0
- raid5_get_active_stripe still sleeps, since nobody wakes up
wait_for_stripe[0]
The system live locks. The problem is active_stripes isn't a per-hash
count. Revert the patch makes the live lock go away.
Cc: stable@vger.kernel.org (v4.2+)
Cc: Yuanhan Liu <yuanhan.liu@linux.intel.com>
Cc: NeilBrown <neilb@suse.de>
Signed-off-by: Shaohua Li <shli@fb.com>
Diffstat (limited to 'drivers/md/faulty.c')
0 files changed, 0 insertions, 0 deletions