]> 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>
Thu, 27 Sep 2012 06:49:54 +0000 (16:49 +1000)
Signed-off-by: NeilBrown <neilb@suse.de>
Monitor.c

index 4fed1d3a276b5a60cc5a554f5376e07f816dd9e0..7250206520cd48c6effe0749a53e57c4dd39d968 100644 (file)
--- a/Monitor.c
+++ b/Monitor.c
@@ -518,6 +518,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 &&
@@ -526,7 +533,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
@@ -719,7 +725,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;