mirror of
https://github.com/morgan9e/systemd
synced 2026-04-14 00:14:32 +09:00
cgroup-util: drop cgroup v1 support in cg_get_path()
We have dropped cgroup v1 support in v258. Let's assume we are running on cgroup v2 and drop unused legacy code.
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user