From 6a5ce2f6b362f867d3b951f1f04ebbb832656f49 Mon Sep 17 00:00:00 2001 From: Mikulas Patocka Date: Sat, 6 Mar 2010 02:32:22 +0000 Subject: [PATCH] --- yaml --- r: 186429 b: refs/heads/master c: ede5ea0b8b815560dc54c712536fdf0b456b6ad0 h: refs/heads/master i: 186427: 6a97cfacc1a9cf9e3896ae043cf9230524ba5f5a v: v3 --- [refs] | 2 +- trunk/drivers/md/dm-raid1.c | 9 ++++++--- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/[refs] b/[refs] index 42c2e5999c75..73102b9c9fd3 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: fb61264297ca42a2a132f0433f75ccf7fd304ac6 +refs/heads/master: ede5ea0b8b815560dc54c712536fdf0b456b6ad0 diff --git a/trunk/drivers/md/dm-raid1.c b/trunk/drivers/md/dm-raid1.c index 6c1046df81f6..de26fde4098f 100644 --- a/trunk/drivers/md/dm-raid1.c +++ b/trunk/drivers/md/dm-raid1.c @@ -737,9 +737,12 @@ static void do_writes(struct mirror_set *ms, struct bio_list *writes) dm_rh_delay(ms->rh, bio); while ((bio = bio_list_pop(&nosync))) { - if (unlikely(ms->leg_failure) && errors_handled(ms)) - hold_bio(ms, bio); - else { + if (unlikely(ms->leg_failure) && errors_handled(ms)) { + spin_lock_irq(&ms->lock); + bio_list_add(&ms->failures, bio); + spin_unlock_irq(&ms->lock); + wakeup_mirrord(ms); + } else { map_bio(get_default_mirror(ms), bio); generic_make_request(bio); }