summaryrefslogtreecommitdiff
path: root/src/basic
diff options
context:
space:
mode:
Diffstat (limited to 'src/basic')
-rw-r--r--src/basic/cgroup-util.c22
1 files changed, 12 insertions, 10 deletions
diff --git a/src/basic/cgroup-util.c b/src/basic/cgroup-util.c
index 9208873d9c..f80b6cacfb 100644
--- a/src/basic/cgroup-util.c
+++ b/src/basic/cgroup-util.c
@@ -2408,23 +2408,24 @@ bool cg_is_unified_wanted(void) {
static thread_local int wanted = -1;
int r;
bool b;
+ const bool is_default = DEFAULT_HIERARCHY == CGROUP_UNIFIED_ALL;
/* If the hierarchy is already mounted, then follow whatever
* was chosen for it. */
if (cg_unified_flush() >= 0)
return cg_all_unified();
- /* Otherwise, let's see what the kernel command line has to
- * say. Since checking that is expensive, let's cache the
- * result. */
+ /* If we have a cached value, return that. */
if (wanted >= 0)
return wanted;
+ /* Otherwise, let's see what the kernel command line has to say.
+ * Since checking is expensive, cache a non-error result. */
r = proc_cmdline_get_bool("systemd.unified_cgroup_hierarchy", &b);
if (r < 0)
- return false;
+ return is_default;
- return (wanted = r > 0 ? b : false);
+ return (wanted = r > 0 ? b : is_default);
}
bool cg_is_legacy_wanted(void) {
@@ -2435,6 +2436,7 @@ bool cg_is_unified_systemd_controller_wanted(void) {
static thread_local int wanted = -1;
int r;
bool b;
+ const bool is_default = DEFAULT_HIERARCHY == CGROUP_UNIFIED_SYSTEMD;
/* If the unified hierarchy is requested in full, no need to
* bother with this. */
@@ -2446,19 +2448,19 @@ bool cg_is_unified_systemd_controller_wanted(void) {
if (cg_unified_flush() >= 0)
return cg_unified(SYSTEMD_CGROUP_CONTROLLER);
- /* Otherwise, let's see what the kernel command line has to
- * say. Since checking that is expensive, let's cache the
- * result. */
+ /* If we have a cached value, return that. */
if (wanted >= 0)
return wanted;
+ /* Otherwise, let's see what the kernel command line has to say.
+ * Since checking is expensive, cache a non-error result. */
r = proc_cmdline_get_bool("systemd.legacy_systemd_cgroup_controller", &b);
if (r < 0)
- return false;
+ return is_default;
/* The meaning of the kernel option is reversed wrt. to the return value
* of this function, hence the negation. */
- return (wanted = r > 0 ? !b : false);
+ return (wanted = r > 0 ? !b : is_default);
}
int cg_weight_parse(const char *s, uint64_t *ret) {