NeilBrown: Assemble/super0: allow non-in-sync devices to be assembled without complaint.

Martin F. Krafft madduck at alioth.debian.org
Wed Jan 27 02:03:29 UTC 2010


Module: mdadm
Branch: upstream
Commit: 672ca1b7272c69ea3055aeb746a77b8408e5f3ed
URL:    http://git.debian.org/?p=pkg-mdadm/mdadm.git;a=commit;h=672ca1b7272c69ea3055aeb746a77b8408e5f3ed

Author: NeilBrown <neilb at suse.de>
Date:   Tue Nov 17 12:31:10 2009 +1100

Assemble/super0: allow non-in-sync devices to be assembled without complaint.

Other metadata formats already did not worry about whether 'sync' was
missing or not.  super0 needs that now, but only for 0.91 metadata
that is undergoing reshape.

Signed-off-by: NeilBrown <neilb at suse.de>

---

 super0.c |    9 ++++++++-
 1 files changed, 8 insertions(+), 1 deletions(-)

diff --git a/super0.c b/super0.c
index 69fb460..9f78b94 100644
--- a/super0.c
+++ b/super0.c
@@ -478,7 +478,14 @@ static int update_super0(struct supertype *st, struct mdinfo *info,
 	if (strcmp(update, "assemble")==0) {
 		int d = info->disk.number;
 		int wonly = sb->disks[d].state & (1<<MD_DISK_WRITEMOSTLY);
-		if ((sb->disks[d].state & ~(1<<MD_DISK_WRITEMOSTLY))
+		int mask = (1<<MD_DISK_WRITEMOSTLY);
+		int add = 0;
+		if (sb->minor_version >= 91)
+			/* During reshape we don't insist on everything
+			 * being marked 'sync'
+			 */
+			add = (1<<MD_DISK_SYNC);
+		if (((sb->disks[d].state & ~mask) | add)
 		    != info->disk.state) {
 			sb->disks[d].state = info->disk.state | wonly;
 			rv = 1;




More information about the pkg-mdadm-commits mailing list