]> git.ipfire.org Git - thirdparty/mdadm.git/blobdiff - Create.c
port arch/x86/kernel/probe_roms_32.c for use in 'platform' support
[thirdparty/mdadm.git] / Create.c
index 13301e9b21e0672d7b3a54442c2e0beb7ed59ceb..09df0b8843c7cd97d12744d5cb6ad73aeea468b1 100644 (file)
--- a/Create.c
+++ b/Create.c
@@ -389,7 +389,8 @@ int Create(struct supertype *st, char *mddev,
         * as missing, so that a reconstruct happens (faster than re-parity)
         * FIX: Can we do this for raid6 as well?
         */
-       if (assume_clean==0 && force == 0 && first_missing >= raiddisks) {
+       if (st->ss->external == 0 &&
+           assume_clean==0 && force == 0 && first_missing >= raiddisks) {
                switch ( level ) {
                case 4:
                case 5:
@@ -427,6 +428,7 @@ int Create(struct supertype *st, char *mddev,
        mdfd = create_mddev(mddev, name, autof, LOCAL, chosen_name);
        if (mdfd < 0)
                return 1;
+       mddev = chosen_name;
 
        vers = md_get_version(mdfd);
        if (vers < 9000) {
@@ -703,8 +705,9 @@ int Create(struct supertype *st, char *mddev,
                                inf->disk.minor = minor(stb.st_rdev);
 
                                remove_partitions(fd);
-                               st->ss->add_to_super(st, &inf->disk,
-                                                    fd, dv->devname);
+                               if (st->ss->add_to_super(st, &inf->disk,
+                                                        fd, dv->devname))
+                                       goto abort;
                                st->ss->getinfo_super(st, inf);
                                safe_mode_delay = inf->safe_mode_delay;
 
@@ -778,6 +781,7 @@ int Create(struct supertype *st, char *mddev,
                        ping_monitor(devnum2devname(st->container_dev));
                        close(container_fd);
                }
+               wait_for(chosen_name);
        } else {
                fprintf(stderr, Name ": not starting array - not enough devices.\n");
        }