]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
systemctl: show tainted state
authorLennart Poettering <lennart@poettering.net>
Wed, 30 Mar 2022 14:11:28 +0000 (16:11 +0200)
committerLuca Boccassi <luca.boccassi@gmail.com>
Thu, 31 Mar 2022 21:11:32 +0000 (22:11 +0100)
src/systemctl/systemctl-list-machines.c
src/systemctl/systemctl-list-machines.h
src/systemctl/systemctl-show.c

index 0abafa7bf0e5ba802daebdbcdc73ef6292f9cdf7..121d5ab9ce99a4284339f1fc8de08dfcbacb5bae 100644 (file)
 #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)         },
+        /* 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)  },
-        { "UserspaceTimestamp", "t", NULL, offsetof(struct machine_info, timestamp)      },
+        { "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);
 }
 
index 9dff0d172808dfbf0d500a8cc1daa1d01f6d5206..95a685970b0662e84c9f130ec1d98d3248590e5b 100644 (file)
@@ -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);
index 24e43321cf5c345feab4542a6bde73cc7d55c6ed..4daf312b8b4d0cbbb5de3746f1a125d247234c97 100644 (file)
@@ -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));