diff options
author | NeilBrown <neilb@suse.de> | 2009-11-17 02:31:10 +0100 |
---|---|---|
committer | NeilBrown <neilb@suse.de> | 2009-11-17 02:31:10 +0100 |
commit | 672ca1b7272c69ea3055aeb746a77b8408e5f3ed (patch) | |
tree | 12c2af1837d4813e3e19699c4be4b8b8cc7fc760 /super0.c | |
parent | Assemble: include ACTIVE but not in-sync devices as non-spares. (diff) | |
download | mdadm-672ca1b7272c69ea3055aeb746a77b8408e5f3ed.tar.xz mdadm-672ca1b7272c69ea3055aeb746a77b8408e5f3ed.zip |
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@suse.de>
Diffstat (limited to '')
-rw-r--r-- | super0.c | 9 |
1 files changed, 8 insertions, 1 deletions
@@ -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; |