summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/core/job.c2
-rw-r--r--src/core/main.c2
-rw-r--r--src/core/manager.c23
-rw-r--r--src/core/manager.h4
4 files changed, 16 insertions, 15 deletions
diff --git a/src/core/job.c b/src/core/job.c
index 5982404cf0..741c79fdae 100644
--- a/src/core/job.c
+++ b/src/core/job.c
@@ -862,7 +862,7 @@ static void job_print_done_status_message(Unit *u, JobType t, JobResult result)
status = job_print_done_status_messages[result].word;
if (result != JOB_DONE)
- manager_flip_auto_status(u->manager, true);
+ manager_flip_auto_status(u->manager, true, "job failed");
DISABLE_WARNING_FORMAT_NONLITERAL;
unit_status_printf(u, status, format);
diff --git a/src/core/main.c b/src/core/main.c
index 09846eaadb..5302c4d27c 100644
--- a/src/core/main.c
+++ b/src/core/main.c
@@ -711,7 +711,7 @@ static void set_manager_settings(Manager *m) {
m->kexec_watchdog = arg_kexec_watchdog;
m->cad_burst_action = arg_cad_burst_action;
- manager_set_show_status(m, arg_show_status);
+ manager_set_show_status(m, arg_show_status, "commandline");
m->status_unit_format = arg_status_unit_format;
}
diff --git a/src/core/manager.c b/src/core/manager.c
index 7ccfde1567..feb7b3efd0 100644
--- a/src/core/manager.c
+++ b/src/core/manager.c
@@ -173,15 +173,15 @@ static void draw_cylon(char buffer[], size_t buflen, unsigned width, unsigned po
}
}
-void manager_flip_auto_status(Manager *m, bool enable) {
+void manager_flip_auto_status(Manager *m, bool enable, const char *reason) {
assert(m);
if (enable) {
if (m->show_status == SHOW_STATUS_AUTO)
- manager_set_show_status(m, SHOW_STATUS_TEMPORARY);
+ manager_set_show_status(m, SHOW_STATUS_TEMPORARY, reason);
} else {
if (m->show_status == SHOW_STATUS_TEMPORARY)
- manager_set_show_status(m, SHOW_STATUS_AUTO);
+ manager_set_show_status(m, SHOW_STATUS_AUTO, reason);
}
}
@@ -198,7 +198,7 @@ static void manager_print_jobs_in_progress(Manager *m) {
assert(m);
assert(m->n_running_jobs > 0);
- manager_flip_auto_status(m, true);
+ manager_flip_auto_status(m, true, "delay");
print_nr = (m->jobs_in_progress_iteration / JOBS_IN_PROGRESS_PERIOD_DIVISOR) % m->n_running_jobs;
@@ -2736,11 +2736,11 @@ static int manager_dispatch_signal_fd(sd_event_source *source, int fd, uint32_t
switch (sfsi.ssi_signo - SIGRTMIN) {
case 20:
- manager_set_show_status(m, SHOW_STATUS_YES);
+ manager_set_show_status(m, SHOW_STATUS_YES, "signal");
break;
case 21:
- manager_set_show_status(m, SHOW_STATUS_NO);
+ manager_set_show_status(m, SHOW_STATUS_NO, "signal");
break;
case 22:
@@ -3402,7 +3402,7 @@ int manager_deserialize(Manager *m, FILE *f, FDSet *fds) {
if (s < 0)
log_notice("Failed to parse show-status flag '%s', ignoring.", val);
else
- manager_set_show_status(m, s);
+ manager_set_show_status(m, s, "deserialization");
} else if ((val = startswith(l, "log-level-override="))) {
int level;
@@ -3778,7 +3778,7 @@ void manager_check_finished(Manager *m) {
return;
}
- manager_flip_auto_status(m, false);
+ manager_flip_auto_status(m, false, "boot finished");
/* Notify Type=idle units that we are done now */
manager_close_idle_pipe(m);
@@ -4076,7 +4076,7 @@ void manager_recheck_journal(Manager *m) {
log_open();
}
-void manager_set_show_status(Manager *m, ShowStatus mode) {
+void manager_set_show_status(Manager *m, ShowStatus mode, const char *reason) {
assert(m);
assert(IN_SET(mode, SHOW_STATUS_AUTO, SHOW_STATUS_NO, SHOW_STATUS_YES, SHOW_STATUS_TEMPORARY));
@@ -4085,9 +4085,10 @@ void manager_set_show_status(Manager *m, ShowStatus mode) {
bool enabled = show_status_on(mode);
if (mode != m->show_status)
- log_debug("%s showing of status (%s).",
+ log_debug("%s (%s) showing of status (%s).",
enabled ? "Enabling" : "Disabling",
- strna(show_status_to_string(mode)));
+ strna(show_status_to_string(mode)),
+ reason);
m->show_status = mode;
if (enabled)
diff --git a/src/core/manager.h b/src/core/manager.h
index 67f9af5fc6..78d2cb5d3f 100644
--- a/src/core/manager.h
+++ b/src/core/manager.h
@@ -505,11 +505,11 @@ void disable_printk_ratelimit(void);
void manager_recheck_dbus(Manager *m);
void manager_recheck_journal(Manager *m);
-void manager_set_show_status(Manager *m, ShowStatus mode);
+void manager_set_show_status(Manager *m, ShowStatus mode, const char *reason);
void manager_set_first_boot(Manager *m, bool b);
void manager_status_printf(Manager *m, StatusType type, const char *status, const char *format, ...) _printf_(4,5);
-void manager_flip_auto_status(Manager *m, bool enable);
+void manager_flip_auto_status(Manager *m, bool enable, const char *reason);
Set *manager_get_units_requiring_mounts_for(Manager *m, const char *path);