diff options
author | Mikulas Patocka <mpatocka@redhat.com> | 2009-07-23 20:30:37 +0100 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2009-07-30 14:39:57 -0700 |
commit | ff1a7a3f2bb52774ac94a624475403ee37ca3541 (patch) | |
tree | 8dc83a4faedb5c9f964ae24134d9e0b428503853 | |
parent | d7895f7d3f4abfe44bcbb2dbb3b95cea882e7393 (diff) |
dm raid1: wake kmirrord when requeueing delayed bios after remote recovery
commit 69885683d22d8c05910fd808c01fdce1322739b4 upstream.
The recent commit 7513c2a761d69d2a93f17146b3563527d3618ba0 (dm raid1:
add is_remote_recovering hook for clusters) changed do_writes() to
update the ms->writes list but forgot to wake up kmirrord to process it.
The rule is that when anything is being added on ms->reads, ms->writes
or ms->failures and the list was empty before we must call
wakeup_mirrord (for immediate processing) or delayed_wake (for delayed
processing). Otherwise the bios could sit on the list indefinitely.
Signed-off-by: Mikulas Patocka <mpatocka@redhat.com>
Signed-off-by: Alasdair G Kergon <agk@redhat.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-rw-r--r-- | drivers/md/dm-raid1.c | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/drivers/md/dm-raid1.c b/drivers/md/dm-raid1.c index 076fbb4e967a..d8d31b85607d 100644 --- a/drivers/md/dm-raid1.c +++ b/drivers/md/dm-raid1.c @@ -638,6 +638,7 @@ static void do_writes(struct mirror_set *ms, struct bio_list *writes) spin_lock_irq(&ms->lock); bio_list_merge(&ms->writes, &requeue); spin_unlock_irq(&ms->lock); + delayed_wake(ms); } /* |