From 4ab1670f3de2debb5fd373ab3320925eccfc417d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Tue, 1 Oct 2019 15:53:42 +0200 Subject: [PATCH] core: rework how logging level is calculated for kill operations Setting the log level based on the signal made sense when signals that were used were fixed. Since we allow signals to be configured, it doesn't make sense to log at notice level about e.g. a restart or stop operation just because the signal used is different. This avoids messages like: six.service: Killing process 210356 (sleep) with signal SIGINT. --- src/core/unit.c | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/src/core/unit.c b/src/core/unit.c index 494185a046..0d93b94b81 100644 --- a/src/core/unit.c +++ b/src/core/unit.c @@ -4686,22 +4686,26 @@ static int log_kill(pid_t pid, int sig, void *userdata) { return 1; } -static int operation_to_signal(KillContext *c, KillOperation k) { +static int operation_to_signal(const KillContext *c, KillOperation k, bool *noteworthy) { assert(c); switch (k) { case KILL_TERMINATE: case KILL_TERMINATE_AND_LOG: + *noteworthy = false; return c->kill_signal; case KILL_RESTART: + *noteworthy = false; return restart_kill_signal(c); case KILL_KILL: + *noteworthy = true; return c->final_kill_signal; case KILL_WATCHDOG: + *noteworthy = true; return c->watchdog_signal; default: @@ -4730,16 +4734,16 @@ int unit_kill_context( if (c->kill_mode == KILL_NONE) return 0; - sig = operation_to_signal(c, k); + bool noteworthy; + sig = operation_to_signal(c, k, ¬eworthy); + if (noteworthy) + log_func = log_kill; send_sighup = c->send_sighup && IN_SET(k, KILL_TERMINATE, KILL_TERMINATE_AND_LOG) && sig != SIGHUP; - if (k != KILL_TERMINATE || IN_SET(sig, SIGKILL, SIGABRT)) - log_func = log_kill; - if (main_pid > 0) { if (log_func) log_func(main_pid, sig, u);