]> git.ipfire.org Git - thirdparty/mdadm.git/commitdiff
Monitor: Report NewArray when an array the disappeared, reappears.
authorNeilBrown <neilb@suse.de>
Mon, 4 Jun 2012 02:52:36 +0000 (12:52 +1000)
committerNeilBrown <neilb@suse.de>
Mon, 4 Jun 2012 02:52:36 +0000 (12:52 +1000)
Signed-off-by: NeilBrown <neilb@suse.de>
Monitor.c

index d9295b5275371a5916631280f5f9133a66295730..b8e028ba6aa951aa744b0ca756eaca41c69939da 100644 (file)
--- a/Monitor.c
+++ b/Monitor.c
@@ -513,6 +513,13 @@ static int check_array(struct state *st, struct mdstat_ent *mdstat,
                 * just make sure it is always different. */
                array.utime = st->utime + 1;;
 
+       if (st->err) {
+               /* New array appeared where previously had and error */
+               st->err = 0;
+               st->percent = RESYNC_NONE;
+               alert("NewArray", st->devname, NULL, ainfo);
+       }
+
        if (st->utime == array.utime &&
            st->failed == array.failed_disks &&
            st->working == array.working_disks &&
@@ -521,7 +528,6 @@ static int check_array(struct state *st, struct mdstat_ent *mdstat,
                    mse->percent == st->percent
                    ))) {
                close(fd);
-               st->err = 0;
                if ((st->active < st->raid) && st->spare == 0)
                        return 1;
                else
@@ -714,7 +720,6 @@ static int add_new_arrays(struct mdstat_ent *mdstat, struct state **statelist,
                        *statelist = st;
                        if (test)
                                alert("TestMessage", st->devname, NULL, info);
-                       alert("NewArray", st->devname, NULL, info);
                        new_found = 1;
                }
        return new_found;