summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNeilBrown <neilb@suse.de>2010-10-28 17:30:20 +1100
committerNeilBrown <neilb@suse.de>2010-10-28 17:30:20 +1100
commitd97a41dc9c44f5829b7af7aa69fda10fd82b6b4e (patch)
tree4a834cce291edf6798f57d925a6134c287de974d
parent12ba8d1e9262ce81a695795410bd9ee5c9407ba1 (diff)
downloadlinux-d97a41dc9c44f5829b7af7aa69fda10fd82b6b4e.tar.bz2
md: Fix regression with raid1 arrays without persistent metadata.
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> Cc: stable@kernel.org
-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 225815197a3d..64f97168cefa 100644
--- a/drivers/md/md.c
+++ b/drivers/md/md.c
@@ -2108,6 +2108,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;
}