diff options
author | Neil Brown <neilb@suse.de> | 2003-07-28 23:59:00 +0000 |
---|---|---|
committer | Neil Brown <neilb@suse.de> | 2003-07-28 23:59:00 +0000 |
commit | aa88f531b468349982905ecacf11da2cb6678ce6 (patch) | |
tree | 9a138bc93ff24d041d638a2dcabe3fb6279aee55 /Monitor.c | |
parent | 56eedc1a3f077e1822a4ee0889a78d89e834b037 (diff) | |
download | mdadm-aa88f531b468349982905ecacf11da2cb6678ce6.tar.gz mdadm-aa88f531b468349982905ecacf11da2cb6678ce6.tar.xz mdadm-aa88f531b468349982905ecacf11da2cb6678ce6.zip |
mdadm-1.3.0mdadm-1.3.0
Diffstat (limited to 'Monitor.c')
-rw-r--r-- | Monitor.c | 22 |
1 files changed, 18 insertions, 4 deletions
@@ -45,7 +45,7 @@ static char *percentalerts[] = { int Monitor(mddev_dev_t devlist, char *mailaddr, char *alert_cmd, - int period, int daemonise, int scan, + int period, int daemonise, int scan, int oneshot, char *config) { /* @@ -176,6 +176,7 @@ int Monitor(mddev_dev_t devlist, while (! finished) { + int new_found = 0; struct state *st; if (mdstat) @@ -241,6 +242,12 @@ int Monitor(mddev_dev_t devlist, st->err = 0; continue; } + if (st->utime == 0 && /* new array */ + mse && /* is in /proc/mdstat */ + mse->pattern && strchr(mse->pattern, '_') /* degraded */ + ) + alert("DegradedArray", dev, NULL, mailaddr, alert_cmd); + if (mse && st->percent == -1 && mse->percent >= 0) @@ -323,6 +330,7 @@ int Monitor(mddev_dev_t devlist, st->spare_group = NULL; statelist = st; alert("NewArray", st->devname, NULL, mailaddr, alert_cmd); + new_found = 1; } } /* If an array has active < raid && spare == 0 && spare_group != NULL @@ -374,8 +382,12 @@ int Monitor(mddev_dev_t devlist, close(fd2); } } - - sleep(period); + if (!new_found) { + if (oneshot) + break; + else + sleep(period); + } } return 0; } @@ -401,7 +413,9 @@ static void alert(char *event, char *dev, char *disc, char *mailaddr, char *cmd) exit(2); } } - if (mailaddr && strncmp(event, "Fail", 4)==0) { + if (mailaddr && + (strncmp(event, "Fail", 4)==0 || + strncmp(event, "Degrade", 7)==0)) { FILE *mp = popen(Sendmail, "w"); if (mp) { char hname[256]; |