|
|
|
From c571dc5f7d593a4526da9e19b35ae3d1ed11bfaa Mon Sep 17 00:00:00 2001
|
|
|
|
From: Michal Schmidt <mschmidt@redhat.com>
|
|
|
|
Date: Mon, 20 Jul 2015 17:18:13 +0200
|
|
|
|
Subject: [PATCH] core: always try harder to get unit status message format
|
|
|
|
string
|
|
|
|
|
|
|
|
The starting/stopping messages are printed to the console only if the
|
|
|
|
corresponding format string is defined in the unit's vtable. To avoid
|
|
|
|
excessive messages on the console, the unit types whose start/stop
|
|
|
|
jobs are instantaneous had the format strings intentionally undefined.
|
|
|
|
When logging the same event to the journal, a fallback to generic
|
|
|
|
Starting/Stopping/Reloading messages is used.
|
|
|
|
|
|
|
|
The problem of excessive console messages with instantaneous jobs
|
|
|
|
is already resolved in a nicer way ("core: fix confusing logging of
|
|
|
|
instantaneous jobs"), so there's no longer a need to have two ways of
|
|
|
|
getting the format strings. Let's fold them into one function with
|
|
|
|
the fallback to generic message strings.
|
|
|
|
|
|
|
|
(cherry picked from commit a85ca902c9f7f5aa8f2f3e3299147733802cf09d)
|
|
|
|
|
|
|
|
Related: #1506256
|
|
|
|
---
|
|
|
|
src/core/unit.c | 34 ++++++++++------------------------
|
|
|
|
1 file changed, 10 insertions(+), 24 deletions(-)
|
|
|
|
|
|
|
|
diff --git a/src/core/unit.c b/src/core/unit.c
|
|
|
|
index 907a4bf7fd..a33cbdf73f 100644
|
|
|
|
--- a/src/core/unit.c
|
|
|
|
+++ b/src/core/unit.c
|
|
|
|
@@ -1328,32 +1328,21 @@ static bool unit_assert_test(Unit *u) {
|
|
|
|
}
|
|
|
|
|
|
|
|
_pure_ static const char* unit_get_status_message_format(Unit *u, JobType t) {
|
|
|
|
- const UnitStatusMessageFormats *format_table;
|
|
|
|
-
|
|
|
|
- assert(u);
|
|
|
|
- assert(t >= 0);
|
|
|
|
- assert(t < _JOB_TYPE_MAX);
|
|
|
|
-
|
|
|
|
- if (t != JOB_START && t != JOB_STOP)
|
|
|
|
- return NULL;
|
|
|
|
-
|
|
|
|
- format_table = &UNIT_VTABLE(u)->status_message_formats;
|
|
|
|
- if (!format_table)
|
|
|
|
- return NULL;
|
|
|
|
-
|
|
|
|
- return format_table->starting_stopping[t == JOB_STOP];
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-_pure_ static const char *unit_get_status_message_format_try_harder(Unit *u, JobType t) {
|
|
|
|
const char *format;
|
|
|
|
+ const UnitStatusMessageFormats *format_table;
|
|
|
|
|
|
|
|
assert(u);
|
|
|
|
assert(t >= 0);
|
|
|
|
assert(t < _JOB_TYPE_MAX);
|
|
|
|
|
|
|
|
- format = unit_get_status_message_format(u, t);
|
|
|
|
- if (format)
|
|
|
|
- return format;
|
|
|
|
+ if (t == JOB_START || t == JOB_STOP) {
|
|
|
|
+ format_table = &UNIT_VTABLE(u)->status_message_formats;
|
|
|
|
+ if (format_table) {
|
|
|
|
+ format = format_table->starting_stopping[t == JOB_STOP];
|
|
|
|
+ if (format)
|
|
|
|
+ return format;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
|
|
|
|
/* Return generic strings */
|
|
|
|
if (t == JOB_START)
|
|
|
|
@@ -1371,9 +1360,6 @@ static void unit_status_print_starting_stopping(Unit *u, JobType t) {
|
|
|
|
|
|
|
|
assert(u);
|
|
|
|
|
|
|
|
- /* We only print status messages for selected units on
|
|
|
|
- * selected operations. */
|
|
|
|
-
|
|
|
|
format = unit_get_status_message_format(u, t);
|
|
|
|
if (!format)
|
|
|
|
return;
|
|
|
|
@@ -1398,7 +1384,7 @@ static void unit_status_log_starting_stopping_reloading(Unit *u, JobType t) {
|
|
|
|
|
|
|
|
/* We log status messages for all units and all operations. */
|
|
|
|
|
|
|
|
- format = unit_get_status_message_format_try_harder(u, t);
|
|
|
|
+ format = unit_get_status_message_format(u, t);
|
|
|
|
if (!format)
|
|
|
|
return;
|
|
|
|
|