From: Dan Williams Date: Wed, 25 Feb 2009 01:45:57 +0000 (-0700) Subject: mdmon: record added disks X-Git-Tag: mdadm-3.0-devel3~27 X-Git-Url: http://git.ipfire.org/?p=thirdparty%2Fmdadm.git;a=commitdiff_plain;h=04a8ac089c1d295c59380419c927d2bc49f33454 mdmon: record added disks Prevent duplicate disks from being sent to the monitor thread. Signed-off-by: Dan Williams --- diff --git a/managemon.c b/managemon.c index c48c8517..5f0a61b5 100644 --- a/managemon.c +++ b/managemon.c @@ -253,6 +253,9 @@ static void add_disk_to_container(struct supertype *st, struct mdinfo *sd) dprintf("%s: add %d:%d to container\n", __func__, sd->disk.major, sd->disk.minor); + sd->next = st->devs; + st->devs = sd; + sprintf(nm, "%d:%d", sd->disk.major, sd->disk.minor); dfd = dev_open(nm, O_RDWR); if (dfd < 0) @@ -313,8 +316,16 @@ static void manage_container(struct mdstat_ent *mdstat, if (di->disk.major == cd->disk.major && di->disk.minor == cd->disk.minor) break; - if (!cd) - add_disk_to_container(container, di); + if (!cd) { + struct mdinfo *newd = malloc(sizeof(*newd)); + + if (!newd) { + container->devcnt = -1; + continue; + } + *newd = *di; + add_disk_to_container(container, newd); + } } sysfs_free(mdi); container->devcnt = mdstat->devcnt;