]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
cg_unified_cached: return ENOMEDIUM if we cannot find a known hierarchy
authorMike Gilbert <floppym@gentoo.org>
Tue, 9 Mar 2021 22:57:37 +0000 (17:57 -0500)
committerLennart Poettering <lennart@poettering.net>
Wed, 17 Mar 2021 14:42:22 +0000 (15:42 +0100)
When the test suite is being run in a foreign environment,
/sys/fs/cgroup might not be set up in a way that we recognize.
Returning ENOMEDIUM causes the tests to be skipped in this case.

Bug: https://bugs.gentoo.org/771819

src/basic/cgroup-util.c

index 527043a2b39048bd11a470e8301460e304691a22..0b252eb28fb82c9b35aaa8a402da66108d7e8f7c 100644 (file)
@@ -2052,8 +2052,14 @@ int cg_unified_cached(bool flush) {
                         unified_cache = CGROUP_UNIFIED_SYSTEMD;
                         unified_systemd_v232 = false;
                 } else {
-                        if (statfs("/sys/fs/cgroup/systemd/", &fs) < 0)
+                        if (statfs("/sys/fs/cgroup/systemd/", &fs) < 0) {
+                                if (errno == ENOENT) {
+                                        /* Some other software may have set up /sys/fs/cgroup in a configuration we do not recognize. */
+                                        log_debug_errno(errno, "Unsupported cgroupsv1 setup detected: name=systemd hierarchy not found.");
+                                        return -ENOMEDIUM;
+                                }
                                 return log_debug_errno(errno, "statfs(\"/sys/fs/cgroup/systemd\" failed: %m");
+                        }
 
                         if (F_TYPE_EQUAL(fs.f_type, CGROUP2_SUPER_MAGIC)) {
                                 log_debug("Found cgroup2 on /sys/fs/cgroup/systemd, unified hierarchy for systemd controller (v232 variant)");