summaryrefslogtreecommitdiff
path: root/drivers/md
diff options
context:
space:
mode:
authorNeilBrown <neilb@suse.de>2010-10-28 17:30:20 +1100
committerGreg Kroah-Hartman <gregkh@suse.de>2010-12-09 13:32:39 -0800
commit3743e8ce777f4f1cfa1797dc1d96a4e94b361a11 (patch)
tree569502b1d23d85f54ad75a892bb04c36b3ee2ee2 /drivers/md
parent9e49bc372442f94445e094868071936950fde523 (diff)
md: Fix regression with raid1 arrays without persistent metadata.
commit d97a41dc9c44f5829b7af7aa69fda10fd82b6b4e upstream. A RAID1 which has no persistent metadata, whether internal or external, will hang on the first write. This is caused by commit 070dc6dd7103b6b3f7e4d46e754354a5c15f366e In that case, MD_CHANGE_PENDING never gets cleared. So during md_update_sb, is neither persistent or external, clear MD_CHANGE_PENDING. This is suitable for 2.6.36-stable. Signed-off-by: NeilBrown <neilb@suse.de> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'drivers/md')
-rw-r--r--drivers/md/md.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/drivers/md/md.c b/drivers/md/md.c
index f20d13e717d5..8871092c46d7 100644
--- a/drivers/md/md.c
+++ b/drivers/md/md.c
@@ -2172,6 +2172,8 @@ repeat:
if (!mddev->persistent) {
clear_bit(MD_CHANGE_CLEAN, &mddev->flags);
clear_bit(MD_CHANGE_DEVS, &mddev->flags);
+ if (!mddev->external)
+ clear_bit(MD_CHANGE_PENDING, &mddev->flags);
wake_up(&mddev->sb_wait);
return;
}