From 45bff9b4e283f8c3f62dc88eff2d52133d1adeea Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Wed, 30 Mar 2022 16:11:28 +0200 Subject: [PATCH] systemctl: show tainted state --- src/systemctl/systemctl-list-machines.c | 16 +++++++++++----- src/systemctl/systemctl-list-machines.h | 9 ++++++--- src/systemctl/systemctl-show.c | 6 ++++++ 3 files changed, 23 insertions(+), 8 deletions(-) diff --git a/src/systemctl/systemctl-list-machines.c b/src/systemctl/systemctl-list-machines.c index 0abafa7bf0..121d5ab9ce 100644 --- a/src/systemctl/systemctl-list-machines.c +++ b/src/systemctl/systemctl-list-machines.c @@ -15,11 +15,15 @@ #include "terminal-util.h" const struct bus_properties_map machine_info_property_map[] = { - { "SystemState", "s", NULL, offsetof(struct machine_info, state) }, - { "NJobs", "u", NULL, offsetof(struct machine_info, n_jobs) }, - { "NFailedUnits", "u", NULL, offsetof(struct machine_info, n_failed_units) }, - { "ControlGroup", "s", NULL, offsetof(struct machine_info, control_group) }, + /* Might good to keep same order here as in bus_manager_vtable[], server side */ + { "Version", "s", NULL, offsetof(struct machine_info, version) }, + { "Tainted", "s", NULL, offsetof(struct machine_info, tainted) }, { "UserspaceTimestamp", "t", NULL, offsetof(struct machine_info, timestamp) }, + { "NNames", "u", NULL, offsetof(struct machine_info, n_names) }, + { "NFailedUnits", "u", NULL, offsetof(struct machine_info, n_failed_units) }, + { "NJobs", "u", NULL, offsetof(struct machine_info, n_jobs) }, + { "ControlGroup", "s", NULL, offsetof(struct machine_info, control_group) }, + { "SystemState", "s", NULL, offsetof(struct machine_info, state) }, {} }; @@ -27,8 +31,10 @@ void machine_info_clear(struct machine_info *info) { assert(info); free(info->name); - free(info->state); + free(info->version); + free(info->tainted); free(info->control_group); + free(info->state); zero(*info); } diff --git a/src/systemctl/systemctl-list-machines.h b/src/systemctl/systemctl-list-machines.h index 9dff0d1728..95a685970b 100644 --- a/src/systemctl/systemctl-list-machines.h +++ b/src/systemctl/systemctl-list-machines.h @@ -12,11 +12,14 @@ int verb_list_machines(int argc, char *argv[], void *userdata); struct machine_info { bool is_host; char *name; - char *state; - char *control_group; + char *version; + char *tainted; + uint64_t timestamp; + uint32_t n_names; uint32_t n_failed_units; uint32_t n_jobs; - usec_t timestamp; + char *control_group; + char *state; }; void machine_info_clear(struct machine_info *info); diff --git a/src/systemctl/systemctl-show.c b/src/systemctl/systemctl-show.c index 24e43321cf..4daf312b8b 100644 --- a/src/systemctl/systemctl-show.c +++ b/src/systemctl/systemctl-show.c @@ -2129,6 +2129,7 @@ static int show_system_status(sd_bus *bus) { printf(" State: %s%s%s\n", on, strna(mi.state), off); + printf(" Units: %" PRIu32 " loaded (incl. loaded aliases)\n", mi.n_names); printf(" Jobs: %" PRIu32 " queued\n", mi.n_jobs); printf(" Failed: %" PRIu32 " units\n", mi.n_failed_units); @@ -2136,6 +2137,11 @@ static int show_system_status(sd_bus *bus) { FORMAT_TIMESTAMP_STYLE(mi.timestamp, arg_timestamp_style), FORMAT_TIMESTAMP_RELATIVE(mi.timestamp)); + printf(" systemd: %s\n", mi.version); + + if (!isempty(mi.tainted)) + printf(" Tainted: %s%s%s\n", ansi_highlight_yellow(), mi.tainted, ansi_normal()); + printf(" CGroup: %s\n", empty_to_root(mi.control_group)); c = LESS_BY(columns(), strlen(prefix));