From: Lennart Poettering Date: Wed, 30 Mar 2011 00:12:46 +0000 (+0200) Subject: taint: add missing cgroups taint flag X-Git-Tag: v21~2 X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=commitdiff_plain;h=871c44a747a8bf4465cbfda445216e9ac66d4a40 taint: add missing cgroups taint flag --- diff --git a/src/dbus-manager.c b/src/dbus-manager.c index a2a25b72f..92a602219 100644 --- a/src/dbus-manager.c +++ b/src/dbus-manager.c @@ -20,6 +20,7 @@ ***/ #include +#include #include "dbus.h" #include "log.h" @@ -224,16 +225,17 @@ static int bus_manager_append_tainted(Manager *m, DBusMessageIter *i, const char assert(property); if (m->taint_usr) - e = stpcpy(e, "usr-separate-fs"); + e = stpcpy(e, "usr-separate-fs "); - if (readlink_malloc("/etc/mtab", &p) < 0) { - if (e != buf) - e = stpcpy(e, " "); - e = stpcpy(e, "etc-mtab-not-symlink"); - } else + if (readlink_malloc("/etc/mtab", &p) < 0) + e = stpcpy(e, "etc-mtab-not-symlink "); + else free(p); - t = buf; + if (access("/proc/cgroups", F_OK) < 0) + e = stpcpy(e, "cgroups-missing "); + + t = strstrip(buf); if (!dbus_message_iter_append_basic(i, DBUS_TYPE_STRING, &t)) return -ENOMEM; diff --git a/src/main.c b/src/main.c index 8d27eb426..176a4f5ec 100644 --- a/src/main.c +++ b/src/main.c @@ -985,10 +985,26 @@ static void test_usr(void) { /* Check that /usr is not a separate fs */ - if (dir_is_empty("/usr") > 0) - log_warning("/usr appears to be on a different file system than /. This is not supported anymore. " - "Some things will probably break (sometimes even silently) in mysterious ways. " - "Consult http://freedesktop.org/wiki/Software/systemd/separate-usr-is-broken for more information."); + if (dir_is_empty("/usr") <= 0) + return; + + log_warning("/usr appears to be on a different file system than /. This is not supported anymore. " + "Some things will probably break (sometimes even silently) in mysterious ways. " + "Consult http://freedesktop.org/wiki/Software/systemd/separate-usr-is-broken for more information."); +} + +static void test_cgroups(void) { + + if (access("/proc/cgroups", F_OK) >= 0) + return; + + log_warning("CONFIG_CGROUPS was not set when your kernel was compiled. " + "Systems without control groups are not supported. " + "We will now sleep for 10s, and then continue boot-up. " + "Expect breakage and please do not file bugs. " + "Instead fix your kernel and enable CONFIG_CGROUPS." ); + + sleep(10); } int main(int argc, char *argv[]) { @@ -1171,6 +1187,7 @@ int main(int argc, char *argv[]) { test_mtab(); test_usr(); + test_cgroups(); } if ((r = manager_new(arg_running_as, &m)) < 0) {