]> git.ipfire.org Git - thirdparty/mdadm.git/blobdiff - mdassemble.c
Factor common code into new "start_mdmon".
[thirdparty/mdadm.git] / mdassemble.c
index 231754800112b6bfd5bce5c0e1803a0e700290f2..9926dde29404a125cae306fa9eca415804d612ea 100644 (file)
@@ -54,7 +54,7 @@ mapping_t pers[] = {
 };
 
 #ifndef MDASSEMBLE_AUTO
-/* from mdadm.c */
+/* from mdopen.c */
 int open_mddev(char *dev, int autof/*unused */)
 {
        int mdfd = open(dev, O_RDWR, 0);
@@ -71,7 +71,6 @@ int open_mddev(char *dev, int autof/*unused */)
 }
 #endif
 
-char *configfile = NULL;
 int rv;
 int mdfd = -1;
 int runstop = 0;
@@ -79,8 +78,8 @@ int readonly = 0;
 int verbose = 0;
 int force = 0;
 
-int main() {
-       mddev_ident_t array_list =  conf_get_ident(configfile, NULL);
+int main(int argc, char *argv[]) {
+       mddev_ident_t array_list =  conf_get_ident(NULL);
        if (!array_list) {
                fprintf(stderr, Name ": No arrays found in config file\n");
                rv = 1;
@@ -92,12 +91,14 @@ int main() {
                                rv |= 1;
                                continue;
                        }
-                       if (ioctl(mdfd, GET_ARRAY_INFO, &array)>=0)
-                               /* already assembled, skip */
-                               continue;
-                       rv |= Assemble(array_list->st, array_list->devname, mdfd,
-                                          array_list, configfile,
-                                          NULL, NULL,
+                       if (ioctl(mdfd, GET_ARRAY_INFO, &array) < 0) {
+                               rv |= Assemble(array_list->st, array_list->devname, mdfd,
+                                          array_list, NULL, NULL,
                                           readonly, runstop, NULL, NULL, verbose, force);
+                       } else {
+                               rv |= Manage_ro(array_list->devname, mdfd, -1); /* make it readwrite */
+                       }
+                       close(mdfd);
                }
+       return rv;
 }