diff options
Diffstat (limited to 'managemon.c')
-rw-r--r-- | managemon.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/managemon.c b/managemon.c index 730334cd..a8af614a 100644 --- a/managemon.c +++ b/managemon.c @@ -555,7 +555,7 @@ static void handle_message(struct supertype *container, struct metadata_update * manage(mdstat, container); free_mdstat(mdstat); - } else { + } else if (!sigterm) { mu = malloc(sizeof(*mu)); mu->len = msg->len; mu->buf = msg->buf; @@ -612,6 +612,7 @@ void do_manager(struct supertype *container) sigdelset(&set, SIGUSR1); sigdelset(&set, SIGHUP); sigdelset(&set, SIGALRM); + sigdelset(&set, SIGTERM); proc_fd = open("/proc/mounts", O_RDONLY); do { @@ -647,6 +648,9 @@ void do_manager(struct supertype *container) manager_ready = 1; + if (sigterm) + wakeup_monitor(); + if (update_queue == NULL) { if (container->sock < 0) mdstat_wait_fd(proc_fd, &set); |