From 0ad6835c98fd3968d998cf9f3e1d88bdf7ec4a76 Mon Sep 17 00:00:00 2001 From: Marcin Labun Date: Tue, 6 Jul 2010 17:49:37 +1000 Subject: [PATCH] Fix the count of member devices in mdstat_read function. Correction of the number of container or volume member devices (devcnt in struct mdstat_ent). The number after the last devices was counted towards member of devices. Signed-off-by: Marcin Labun Signed-off-by: NeilBrown --- mdstat.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/mdstat.c b/mdstat.c index 3bb74fa2..47be2bba 100644 --- 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 -- 2.39.2