summaryrefslogtreecommitdiff
path: root/kernel/sysctl_binary.c
diff options
context:
space:
mode:
authorShaohua Li <shli@fb.com>2016-02-25 16:24:42 -0800
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2016-04-12 09:08:57 -0700
commitad072f606586a70eab8fd168465a6df4c695a9e9 (patch)
treef09fdb7b9968ecaa1e04c23f89cb5868ce9e739d /kernel/sysctl_binary.c
parent8568767fe1d63fbbdeacf2f69da6f84ad277d4f7 (diff)
RAID5: revert e9e4c377e2f563 to fix a livelock
commit 6ab2a4b806ae21b6c3e47c5ff1285ec06d505325 upstream. 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: Yuanhan Liu <yuanhan.liu@linux.intel.com> Cc: NeilBrown <neilb@suse.de> Signed-off-by: Shaohua Li <shli@fb.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'kernel/sysctl_binary.c')
0 files changed, 0 insertions, 0 deletions