mirror of
https://github.com/systemd/systemd.git
synced 2025-02-22 09:57:34 +03:00
core: do not "warn" about mundane emergency actions
For example in a container we'd log: Oct 17 17:01:10 rawhide systemd[1]: Started Power-Off. Oct 17 17:01:10 rawhide systemd[1]: Forcibly powering off: unit succeeded Oct 17 17:01:10 rawhide systemd[1]: Reached target Power-Off. Oct 17 17:01:10 rawhide systemd[1]: Shutting down. and on the console we'd write (in red) [ !! ] Forcibly powering off: unit succeeded This is not useful in any way, and the fact that we're calling an "emergency action" is an internal implementation detail. Let's log about c-a-d and the watchdog actions only.
This commit is contained in:
parent
a400bd8c2a
commit
c7adcb1af9
@ -12,11 +12,12 @@
|
||||
#include "terminal-util.h"
|
||||
#include "virt.h"
|
||||
|
||||
static void log_and_status(Manager *m, const char *message, const char *reason) {
|
||||
log_warning("%s: %s", message, reason);
|
||||
manager_status_printf(m, STATUS_TYPE_EMERGENCY,
|
||||
ANSI_HIGHLIGHT_RED " !! " ANSI_NORMAL,
|
||||
"%s: %s", message, reason);
|
||||
static void log_and_status(Manager *m, bool warn, const char *message, const char *reason) {
|
||||
log_full(warn ? LOG_WARNING : LOG_DEBUG, "%s: %s", message, reason);
|
||||
if (warn)
|
||||
manager_status_printf(m, STATUS_TYPE_EMERGENCY,
|
||||
ANSI_HIGHLIGHT_RED " !! " ANSI_NORMAL,
|
||||
"%s: %s", message, reason);
|
||||
}
|
||||
|
||||
int emergency_action(
|
||||
@ -38,10 +39,12 @@ int emergency_action(
|
||||
return -ECANCELED;
|
||||
}
|
||||
|
||||
bool warn = FLAGS_SET(options, EMERGENCY_ACTION_WARN);
|
||||
|
||||
switch (action) {
|
||||
|
||||
case EMERGENCY_ACTION_REBOOT:
|
||||
log_and_status(m, "Rebooting", reason);
|
||||
log_and_status(m, warn, "Rebooting", reason);
|
||||
|
||||
(void) update_reboot_parameter_and_warn(reboot_arg);
|
||||
(void) manager_add_job_by_name_and_warn(m, JOB_START, SPECIAL_REBOOT_TARGET, JOB_REPLACE_IRREVERSIBLY, NULL);
|
||||
@ -49,7 +52,7 @@ int emergency_action(
|
||||
break;
|
||||
|
||||
case EMERGENCY_ACTION_REBOOT_FORCE:
|
||||
log_and_status(m, "Forcibly rebooting", reason);
|
||||
log_and_status(m, warn, "Forcibly rebooting", reason);
|
||||
|
||||
(void) update_reboot_parameter_and_warn(reboot_arg);
|
||||
m->objective = MANAGER_REBOOT;
|
||||
@ -57,7 +60,7 @@ int emergency_action(
|
||||
break;
|
||||
|
||||
case EMERGENCY_ACTION_REBOOT_IMMEDIATE:
|
||||
log_and_status(m, "Rebooting immediately", reason);
|
||||
log_and_status(m, warn, "Rebooting immediately", reason);
|
||||
|
||||
sync();
|
||||
|
||||
@ -73,7 +76,7 @@ int emergency_action(
|
||||
|
||||
case EMERGENCY_ACTION_EXIT:
|
||||
if (MANAGER_IS_USER(m) || detect_container() > 0) {
|
||||
log_and_status(m, "Exiting", reason);
|
||||
log_and_status(m, warn, "Exiting", reason);
|
||||
(void) manager_add_job_by_name_and_warn(m, JOB_START, SPECIAL_EXIT_TARGET, JOB_REPLACE_IRREVERSIBLY, NULL);
|
||||
break;
|
||||
}
|
||||
@ -82,13 +85,13 @@ int emergency_action(
|
||||
_fallthrough_;
|
||||
|
||||
case EMERGENCY_ACTION_POWEROFF:
|
||||
log_and_status(m, "Powering off", reason);
|
||||
log_and_status(m, warn, "Powering off", reason);
|
||||
(void) manager_add_job_by_name_and_warn(m, JOB_START, SPECIAL_POWEROFF_TARGET, JOB_REPLACE_IRREVERSIBLY, NULL);
|
||||
break;
|
||||
|
||||
case EMERGENCY_ACTION_EXIT_FORCE:
|
||||
if (MANAGER_IS_USER(m) || detect_container() > 0) {
|
||||
log_and_status(m, "Exiting immediately", reason);
|
||||
log_and_status(m, warn, "Exiting immediately", reason);
|
||||
m->objective = MANAGER_EXIT;
|
||||
break;
|
||||
}
|
||||
@ -97,12 +100,12 @@ int emergency_action(
|
||||
_fallthrough_;
|
||||
|
||||
case EMERGENCY_ACTION_POWEROFF_FORCE:
|
||||
log_and_status(m, "Forcibly powering off", reason);
|
||||
log_and_status(m, warn, "Forcibly powering off", reason);
|
||||
m->objective = MANAGER_POWEROFF;
|
||||
break;
|
||||
|
||||
case EMERGENCY_ACTION_POWEROFF_IMMEDIATE:
|
||||
log_and_status(m, "Powering off immediately", reason);
|
||||
log_and_status(m, warn, "Powering off immediately", reason);
|
||||
|
||||
sync();
|
||||
|
||||
|
@ -18,6 +18,7 @@ typedef enum EmergencyAction {
|
||||
|
||||
typedef enum EmergencyActionFlags {
|
||||
EMERGENCY_ACTION_IS_WATCHDOG = 1 << 0,
|
||||
EMERGENCY_ACTION_WARN = 1 << 1,
|
||||
} EmergencyActionFlags;
|
||||
|
||||
#include "macro.h"
|
||||
|
@ -973,7 +973,8 @@ static int job_dispatch_timer(sd_event_source *s, uint64_t monotonic, void *user
|
||||
u = j->unit;
|
||||
job_finish_and_invalidate(j, JOB_TIMEOUT, true, false);
|
||||
|
||||
emergency_action(u->manager, u->job_timeout_action, EMERGENCY_ACTION_IS_WATCHDOG,
|
||||
emergency_action(u->manager, u->job_timeout_action,
|
||||
EMERGENCY_ACTION_IS_WATCHDOG|EMERGENCY_ACTION_WARN,
|
||||
u->job_timeout_reboot_arg, "job timed out");
|
||||
|
||||
return 0;
|
||||
|
@ -2538,7 +2538,7 @@ static void manager_handle_ctrl_alt_del(Manager *m) {
|
||||
if (ratelimit_below(&m->ctrl_alt_del_ratelimit) || m->cad_burst_action == EMERGENCY_ACTION_NONE)
|
||||
manager_start_target(m, SPECIAL_CTRL_ALT_DEL_TARGET, JOB_REPLACE_IRREVERSIBLY);
|
||||
else
|
||||
emergency_action(m, m->cad_burst_action, 0, NULL,
|
||||
emergency_action(m, m->cad_burst_action, EMERGENCY_ACTION_WARN, NULL,
|
||||
"Ctrl-Alt-Del was pressed more than 7 times within 2s");
|
||||
}
|
||||
|
||||
|
@ -1724,7 +1724,8 @@ int unit_start_limit_test(Unit *u) {
|
||||
log_unit_warning(u, "Start request repeated too quickly.");
|
||||
u->start_limit_hit = true;
|
||||
|
||||
return emergency_action(u->manager, u->start_limit_action, EMERGENCY_ACTION_IS_WATCHDOG,
|
||||
return emergency_action(u->manager, u->start_limit_action,
|
||||
EMERGENCY_ACTION_IS_WATCHDOG|EMERGENCY_ACTION_WARN,
|
||||
u->reboot_arg, "unit failed");
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user