]> git.ipfire.org Git - thirdparty/mdadm.git/blobdiff - util.c
mdmon: ping will wait for manage_mon to catch up.
[thirdparty/mdadm.git] / util.c
diff --git a/util.c b/util.c
index 553426647aede5ad69063e694640d6a052fb8328..283eeb6d4118ae656d985ce13654f77d411eb134 100644 (file)
--- a/util.c
+++ b/util.c
@@ -826,10 +826,7 @@ struct supertype *super_by_fd(int fd)
                int devnum;
                if (subarray)
                        *subarray++ = '\0';
-               if (strncmp(dev, "md_d", 4) == 0)
-                       devnum = -1-atoi(dev+4);
-               else
-                       devnum = atoi(dev+2);
+               devnum = devname2devnum(dev);
                subarray = strdup(subarray);
                if (sra)
                        sysfs_free(sra);
@@ -1013,6 +1010,17 @@ char *devnum2devname(int num)
        return strdup(name);
 }
 
+int devname2devnum(char *name)
+{
+       char *ep;
+       int num;
+       if (strncmp(name, "md_d", 4)==0)
+               num = -1-strtoul(name+4, &ep, 10);
+       else
+               num = strtoul(name+2, &ep, 10);
+       return num;
+}
+
 int fd2devnum(int fd)
 {
        struct stat stb;
@@ -1066,6 +1074,16 @@ int signal_mdmon(int devnum)
        return 0;
 }
 
+int env_no_mdmon(void)
+{
+       char *val = getenv("MDADM_NO_MDMON");
+
+       if (val && atoi(val) == 1)
+               return 1;
+
+       return 0;
+}
+
 
 int flush_metadata_updates(struct supertype *st)
 {