]> git.ipfire.org Git - thirdparty/mdadm.git/commitdiff
Incremental: be more relaxed about member arrays not completely assembling.
authorNeilBrown <neilb@suse.de>
Tue, 7 Apr 2009 07:49:05 +0000 (17:49 +1000)
committerNeilBrown <neilb@suse.de>
Tue, 7 Apr 2009 07:49:05 +0000 (17:49 +1000)
During incremental assembly, if the member array doesn't assemble
properly (yet), that isn't an error.

Signed-off-by: NeilBrown <neilb@suse.de>
Incremental.c

index b1cee23fe0c94285047789ee3bb7c1bf3747d29e..1e74da6d06bf3d3921be0970aed145d6f54f7a81 100644 (file)
@@ -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;