summaryrefslogtreecommitdiff
path: root/src/mount.c
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2011-03-03 23:55:30 +0100
committerLennart Poettering <lennart@poettering.net>2011-03-03 23:55:30 +0100
commit430c18ed7f576fd9041b0a02e7c4210bdd020a25 (patch)
tree0ea2aa6c3d7c434c1c8b5dd2c91ca7b54a7771c4 /src/mount.c
parent2b590e135f53a1bd3e771bdc555f7bf28c4cd232 (diff)
kill: always send SIGCONT after SIGTERM
When we kill a process to terminate it make sure to send SIGCONT to ensure it is unpaused and processes the signal.
Diffstat (limited to 'src/mount.c')
-rw-r--r--src/mount.c10
1 files changed, 5 insertions, 5 deletions
diff --git a/src/mount.c b/src/mount.c
index 88b54bbb2..8a9ab1672 100644
--- a/src/mount.c
+++ b/src/mount.c
@@ -729,9 +729,9 @@ static void mount_enter_signal(Mount *m, MountState state, bool success) {
state == MOUNT_REMOUNTING_SIGTERM) ? m->exec_context.kill_signal : SIGKILL;
if (m->control_pid > 0) {
- if (kill(m->exec_context.kill_mode == KILL_PROCESS_GROUP ?
- -m->control_pid :
- m->control_pid, sig) < 0 && errno != ESRCH)
+ if (kill_and_sigcont(m->exec_context.kill_mode == KILL_PROCESS_GROUP ?
+ -m->control_pid :
+ m->control_pid, sig) < 0 && errno != ESRCH)
log_warning("Failed to kill control process %li: %m", (long) m->control_pid);
else
@@ -750,7 +750,7 @@ static void mount_enter_signal(Mount *m, MountState state, bool success) {
if ((r = set_put(pid_set, LONG_TO_PTR(m->control_pid))) < 0)
goto fail;
- if ((r = cgroup_bonding_kill_list(m->meta.cgroup_bondings, sig, pid_set)) < 0) {
+ if ((r = cgroup_bonding_kill_list(m->meta.cgroup_bondings, sig, true, pid_set)) < 0) {
if (r != -EAGAIN && r != -ESRCH && r != -ENOENT)
log_warning("Failed to kill control group: %s", strerror(-r));
} else if (r > 0)
@@ -1678,7 +1678,7 @@ static int mount_kill(Unit *u, KillWho who, KillMode mode, int signo, DBusError
goto finish;
}
- if ((q = cgroup_bonding_kill_list(m->meta.cgroup_bondings, signo, pid_set)) < 0)
+ if ((q = cgroup_bonding_kill_list(m->meta.cgroup_bondings, signo, false, pid_set)) < 0)
if (r != -EAGAIN && r != -ESRCH && r != -ENOENT)
r = q;
}