]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
cgroup-util: drop cgroup v1 support in cg_get_path()
authorYu Watanabe <watanabe.yu+github@gmail.com>
Fri, 29 Aug 2025 22:03:03 +0000 (07:03 +0900)
committerYu Watanabe <watanabe.yu+github@gmail.com>
Mon, 17 Nov 2025 12:30:29 +0000 (21:30 +0900)
We have dropped cgroup v1 support in v258. Let's assume we are running
on cgroup v2 and drop unused legacy code.

src/basic/cgroup-util.c

index 16a963843b99a2143ad0b3bc406f56a6fb062c66..ad130a533472ef9f301b42078f2b1156cec67e5c 100644 (file)
@@ -455,108 +455,22 @@ int cg_kill_kernel_sigkill(const char *path) {
         return 0;
 }
 
-static const char *controller_to_dirname(const char *controller) {
-        assert(controller);
-
-        /* Converts a controller name to the directory name below /sys/fs/cgroup/ we want to mount it
-         * to. Effectively, this just cuts off the name= prefixed used for named hierarchies, if it is
-         * specified. */
-
-        if (streq(controller, SYSTEMD_CGROUP_CONTROLLER)) {
-                if (cg_hybrid_unified() > 0)
-                        controller = SYSTEMD_CGROUP_CONTROLLER_HYBRID;
-                else
-                        controller = SYSTEMD_CGROUP_CONTROLLER_LEGACY;
-        }
-
-        return startswith(controller, "name=") ?: controller;
-}
-
-static int join_path_legacy(const char *controller, const char *path, const char *suffix, char **ret) {
-        const char *dn;
-        char *t = NULL;
-
-        assert(ret);
-        assert(controller);
-
-        dn = controller_to_dirname(controller);
-
-        if (isempty(path) && isempty(suffix))
-                t = path_join("/sys/fs/cgroup", dn);
-        else if (isempty(path))
-                t = path_join("/sys/fs/cgroup", dn, suffix);
-        else if (isempty(suffix))
-                t = path_join("/sys/fs/cgroup", dn, path);
-        else
-                t = path_join("/sys/fs/cgroup", dn, path, suffix);
-        if (!t)
-                return -ENOMEM;
-
-        *ret = t;
-        return 0;
-}
-
-static int join_path_unified(const char *path, const char *suffix, char **ret) {
+int cg_get_path(const char *controller, const char *path, const char *suffix, char **ret) {
         char *t;
 
         assert(ret);
 
-        if (isempty(path) && isempty(suffix))
-                t = strdup("/sys/fs/cgroup");
-        else if (isempty(path))
-                t = path_join("/sys/fs/cgroup", suffix);
-        else if (isempty(suffix))
-                t = path_join("/sys/fs/cgroup", path);
-        else
+        if (isempty(path))
+                path = TAKE_PTR(suffix);
+
+        if (controller)
                 t = path_join("/sys/fs/cgroup", path, suffix);
+        else
+                t = path_join(path, suffix);
         if (!t)
                 return -ENOMEM;
 
-        *ret = t;
-        return 0;
-}
-
-int cg_get_path(const char *controller, const char *path, const char *suffix, char **ret) {
-        int r;
-
-        assert(ret);
-
-        if (!controller) {
-                char *t;
-
-                /* If no controller is specified, we return the path *below* the controllers, without any
-                 * prefix. */
-
-                if (isempty(path) && isempty(suffix))
-                        return -EINVAL;
-
-                if (isempty(suffix))
-                        t = strdup(path);
-                else if (isempty(path))
-                        t = strdup(suffix);
-                else
-                        t = path_join(path, suffix);
-                if (!t)
-                        return -ENOMEM;
-
-                *ret = path_simplify(t);
-                return 0;
-        }
-
-        if (!cg_controller_is_valid(controller))
-                return -EINVAL;
-
-        r = cg_all_unified();
-        if (r < 0)
-                return r;
-        if (r > 0)
-                r = join_path_unified(path, suffix, ret);
-        else
-                r = join_path_legacy(controller, path, suffix, ret);
-        if (r < 0)
-                return r;
-
-        path_simplify(*ret);
+        *ret = path_simplify(t);
         return 0;
 }