]> git.ipfire.org Git - thirdparty/mdadm.git/blobdiff - util.c
monitor: don't mark dirty on resync complete
[thirdparty/mdadm.git] / util.c
diff --git a/util.c b/util.c
index fe46f3b02d9c20a58079e0f70f8b48d41308d1e5..60fe6c0a0c2f9f1d97727da18a9de7f449f41793 100644 (file)
--- a/util.c
+++ b/util.c
@@ -31,6 +31,7 @@
 #include       "md_p.h"
 #include       <sys/socket.h>
 #include       <sys/utsname.h>
+#include       <sys/wait.h>
 #include       <sys/un.h>
 #include       <ctype.h>
 #include       <dirent.h>
@@ -820,7 +821,7 @@ struct supertype *super_by_fd(int fd)
                sprintf(version, "%d.%d", vers, minor);
                verstr = version;
        }
-       if (minor == -2 && verstr[0] == '/') {
+       if (minor == -2 && is_subarray(verstr)) {
                char *dev = verstr+1;
                subarray = strchr(dev, '/');
                int devnum;
@@ -1078,6 +1079,8 @@ int start_mdmon(int devnum)
 {
        int i;
        int len;
+       pid_t pid;      
+       int status;
        char pathbuf[1024];
        char *paths[4] = {
                pathbuf,
@@ -1117,7 +1120,10 @@ int start_mdmon(int devnum)
        case -1: fprintf(stderr, Name ": cannot run mdmon. "
                         "Array remains readonly\n");
                return -1;
-       default: ; /* parent - good */
+       default: /* parent - good */
+               pid = wait(&status);
+               if (pid < 0 || status != 0)
+                       return -1;
        }
        return 0;
 }