]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
pid1: when printing status message status, give reason
authorZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Sat, 29 Feb 2020 09:59:27 +0000 (10:59 +0100)
committerZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Sun, 1 Mar 2020 10:42:19 +0000 (11:42 +0100)
src/core/job.c
src/core/main.c
src/core/manager.c
src/core/manager.h

index 5982404cf0ceca7f56f44a63578314ba70be0385..741c79fdae91372c4a02cbe85c1e2e95aa1dadf8 100644 (file)
@@ -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);
index 09846eaadbb0687a6e41168d2fb7b59427d1344f..5302c4d27c68bda45363dc8e989d79ae42ce194e 100644 (file)
@@ -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;
 }
 
index 7ccfde1567064b8768bdf3196b3b479172e509ae..feb7b3efd07a01dee27cb5567206e4014ae0be4a 100644 (file)
@@ -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)
index 67f9af5fc6b447918d318f2b86c06c69fdcf846e..78d2cb5d3f16ce816d5d49ab5c13832adcfd6569 100644 (file)
@@ -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);