From: NeilBrown <neilb@suse.de>
Date: Thu, 28 Oct 2010 06:30:20 +0000 (+1100)
Subject: md: Fix regression with raid1 arrays without persistent metadata.
X-Git-Url: http://git.maquefel.me/?a=commitdiff_plain;h=d97a41dc9c44f5829b7af7aa69fda10fd82b6b4e;p=linux.git

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
---

diff --git a/drivers/md/md.c b/drivers/md/md.c
index 225815197a3d6..64f97168cefa5 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;
 	}