Marcin Labun: Fix the count of member devices in mdstat_read function.

Martin F. Krafft madduck at alioth.debian.org
Sun Aug 29 11:55:39 UTC 2010


Module: mdadm
Branch: upstream
Commit: 0ad6835c98fd3968d998cf9f3e1d88bdf7ec4a76
URL:    http://git.debian.org/?p=pkg-mdadm/mdadm.git;a=commit;h=0ad6835c98fd3968d998cf9f3e1d88bdf7ec4a76

Author: Marcin Labun <marcin.labun at intel.com>
Date:   Tue Jul  6 17:49:37 2010 +1000

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 <marcin.labun at intel.com>
Signed-off-by: NeilBrown <neilb at suse.de>


---

 mdstat.c |    9 +++++----
 1 files changed, 5 insertions(+), 4 deletions(-)

diff --git a/mdstat.c b/mdstat.c
index 3bb74fa..47be2bb 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




More information about the pkg-mdadm-commits mailing list