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;
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;
}
free_mdstat(ms);
return rv;
}
- free(ms);
+ free_mdstat(ms);
rv = 0;
mdstat_wait(5);
}
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);