diff options
author | NeilBrown <neilb@suse.de> | 2009-04-07 17:49:05 +1000 |
---|---|---|
committer | NeilBrown <neilb@suse.de> | 2009-04-07 17:49:05 +1000 |
commit | 03b7f6c6bd3ede46b0f21b82032fe6746084db48 (patch) | |
tree | 5d644d92a231ad75bd1042962f4567a99f151a70 /Incremental.c | |
parent | 8b4e5ea926a081d870af85fe5d304bcac48d9f57 (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.c | 17 |
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; |