struct state *st;
if (mdlist->devname == NULL)
continue;
+ if (strcasecmp(mdlist->devname, "<ignore>") == 0)
+ continue;
st = malloc(sizeof *st);
if (st == NULL)
continue;
- st->devname = strdup(mdlist->devname);
+ if (mdlist->devname[0] == '/')
+ st->devname = strdup(mdlist->devname);
+ else {
+ st->devname = malloc(8+strlen(mdlist->devname)+1);
+ strcpy(strcpy(st->devname, "/dev/md/"),
+ mdlist->devname);
+ }
st->utime = 0;
st->next = statelist;
st->err = 0;
mse = mse2;
}
+ if (array.utime == 0)
+ /* external arrays don't update utime */
+ array.utime = time(0);
+
if (st->utime == array.utime &&
st->failed == array.failed_disks &&
st->working == array.working_disks &&
st->spare_group = NULL;
st->expected_spares = -1;
statelist = st;
+ if (test)
+ alert("TestMessage", st->devname, NULL, mailaddr, mailfrom, alert_cmd, dosyslog);
alert("NewArray", st->devname, NULL, mailaddr, mailfrom, alert_cmd, dosyslog);
new_found = 1;
}
if (sysfs_match_word(buf, clean_states) <= 4)
break;
FD_SET(state_fd, &fds);
- rv = select(state_fd + 1, &fds, NULL, NULL, &tm);
+ rv = select(state_fd + 1, NULL, NULL, &fds, &tm);
if (rv < 0 && errno != EINTR)
break;
lseek(state_fd, 0, SEEK_SET);