]> git.ipfire.org Git - thirdparty/mdadm.git/blobdiff - Create.c
Create arrays via metadata-update
[thirdparty/mdadm.git] / Create.c
index fe9323879db71813bc0c30039751ee8c215973aa..f4567ca391c9f2bed779f1bc2d45c9bc82930b6a 100644 (file)
--- a/Create.c
+++ b/Create.c
@@ -573,12 +573,13 @@ int Create(struct supertype *st, char *mddev, int mdfd,
                                return 1;
                        }
                        if (mdmon_running(st->container_dev)) {
-                               fprintf(stderr, Name ": mdmon already running "
-                                       "for %s - sorry\n",
-                                       devnum2devname(st->container_dev));
-                               return 1;
-                       }
-                       need_mdmon = 1;
+                               if (verbose)
+                                       fprintf(stderr, Name ": reusing mdmon "
+                                               "for %s.\n",
+                                               devnum2devname(st->container_dev));
+                               st->update_tail = &st->updates;
+                       } else
+                               need_mdmon = 1;
                }
                if ((vers % 100) < 2 ||
                    sra == NULL ||
@@ -707,8 +708,10 @@ int Create(struct supertype *st, char *mddev, int mdfd,
                        }
                        if (dv == moved_disk && dnum != insert_point) break;
                }
-               if (pass == 1)
+               if (pass == 1) {
                        st->ss->write_init_super(st);
+                       flush_metadata_updates(st);
+               }
        }
        free(infos);
        st->ss->free_super(st);