]> git.ipfire.org Git - thirdparty/mdadm.git/blobdiff - mdstat.c
Fix the count of member devices in mdstat_read function.
[thirdparty/mdadm.git] / mdstat.c
index 3bb74fa27410c48feb6a0cad285da1ce23388852..47be2bba21fabaac7a617f8b4f0264f7fcd966a3 100644 (file)
--- a/mdstat.c
+++ b/mdstat.c
@@ -94,19 +94,20 @@ static void free_member_devnames(struct dev_member *m)
        }
 }
 
-static void add_member_devname(struct dev_member **m, char *name)
+static int add_member_devname(struct dev_member **m, char *name)
 {
        struct dev_member *new;
        char *t;
 
        if ((t = strchr(name, '[')) == NULL)
                /* not a device */
-               return;
+               return 0;
 
        new = malloc(sizeof(*new));
        new->name = strndup(name, t - name);
        new->next = *m;
        *m = new;
+       return 1;
 }
 
 void free_mdstat(struct mdstat_ent *ms)
@@ -207,8 +208,8 @@ struct mdstat_ent *mdstat_read(int hold, int start)
                        } else if (in_devs && strcmp(w, "blocks")==0)
                                in_devs = 0;
                        else if (in_devs) {
-                               ent->devcnt++;
-                               add_member_devname(&ent->members, w);
+                               ent->devcnt +=
+                                       add_member_devname(&ent->members, w);
                                if (strncmp(w, "md", 2)==0) {
                                        /* This has an md device as a component.
                                         * If that device is already in the