summaryrefslogtreecommitdiffstats
path: root/drivers/md/raid10.c
diff options
context:
space:
mode:
authorArthur Jones <ajones@riverbed.com>2008-07-25 21:03:38 +0200
committerNeilBrown <neilb@suse.de>2008-08-01 04:55:14 +0200
commit388667bed591b2359713bb17d5de0cf56e961447 (patch)
treeaa8a28db549719fecc540c9c0faf5bba58827ab2 /drivers/md/raid10.c
parentmd: do not count blocked devices as spares (diff)
downloadlinux-388667bed591b2359713bb17d5de0cf56e961447.tar.xz
linux-388667bed591b2359713bb17d5de0cf56e961447.zip
md: raid10: wake up frozen array
When rescheduling a bio in raid10, we wake up the md thread, but if the array is frozen, this will have no effect. This causes the array to remain frozen for eternity. We add a wake_up to allow the array to de-freeze. This code is nearly identical to the raid1 code, which has this fix already. Signed-off-by: Arthur Jones <ajones@riverbed.com> Signed-off-by: NeilBrown <neilb@suse.de>
Diffstat (limited to 'drivers/md/raid10.c')
-rw-r--r--drivers/md/raid10.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/drivers/md/raid10.c b/drivers/md/raid10.c
index 2acea4025243..8674a5f7e706 100644
--- a/drivers/md/raid10.c
+++ b/drivers/md/raid10.c
@@ -215,6 +215,9 @@ static void reschedule_retry(r10bio_t *r10_bio)
conf->nr_queued ++;
spin_unlock_irqrestore(&conf->device_lock, flags);
+ /* wake up frozen array... */
+ wake_up(&conf->wait_barrier);
+
md_wakeup_thread(mddev->thread);
}