summaryrefslogtreecommitdiff
path: root/Incremental.c
diff options
context:
space:
mode:
authorNeilBrown <neilb@suse.de>2009-04-07 17:49:05 +1000
committerNeilBrown <neilb@suse.de>2009-04-07 17:49:05 +1000
commit03b7f6c6bd3ede46b0f21b82032fe6746084db48 (patch)
tree5d644d92a231ad75bd1042962f4567a99f151a70 /Incremental.c
parent8b4e5ea926a081d870af85fe5d304bcac48d9f57 (diff)
Incremental: be more relaxed about member arrays not completely assembling.
During incremental assembly, if the member array doesn't assemble properly (yet), that isn't an error. Signed-off-by: NeilBrown <neilb@suse.de>
Diffstat (limited to 'Incremental.c')
-rw-r--r--Incremental.c17
1 files changed, 10 insertions, 7 deletions
diff --git a/Incremental.c b/Incremental.c
index b1cee23f..1e74da6d 100644
--- a/Incremental.c
+++ b/Incremental.c
@@ -402,8 +402,14 @@ int Incremental(char *devname, int verbose, int runstop,
close(mdfd);
if (runstop < 0)
return 0; /* don't try to assemble */
- return Incremental(chosen_name, verbose, runstop,
- NULL, homehost, autof);
+ rv = Incremental(chosen_name, verbose, runstop,
+ NULL, homehost, autof);
+ if (rv == 1)
+ /* Don't fail the whole -I if a subarray didn't
+ * have enough devices to start yet
+ */
+ rv = 0;
+ return rv;
}
avail = NULL;
active_disks = count_active(st, mdfd, &avail, &info);
@@ -729,7 +735,6 @@ int Incremental_container(struct supertype *st, char *devname, int verbose,
char chosen_name[1024];
struct map_ent *mp;
struct mddev_ident_s *match = NULL;
- int err;
mp = map_by_uuid(&map, ra->uuid);
@@ -789,10 +794,8 @@ int Incremental_container(struct supertype *st, char *devname, int verbose,
return 2;
}
- err = assemble_container_content(st, mdfd, ra, runstop,
- chosen_name, verbose);
- if (err)
- return err;
+ assemble_container_content(st, mdfd, ra, runstop,
+ chosen_name, verbose);
}
map_unlock(&map);
return 0;