mirror of
https://github.com/morgan9e/systemd
synced 2026-04-14 16:37:19 +09:00
cgroup: drop "ignore_self" argument from cg_is_empty()
In all cases where the function (or cg_is_empty_recursive()) ignoring the calling process is actually wrong, as a process keeps a cgroup busy regardless if its the current one or another. Hence, let's simplify things and drop the "ignore_self" parameter.
This commit is contained in:
@@ -891,49 +891,42 @@ int cg_uninstall_release_agent(const char *controller) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
int cg_is_empty(const char *controller, const char *path, bool ignore_self) {
|
||||
int cg_is_empty(const char *controller, const char *path) {
|
||||
_cleanup_fclose_ FILE *f = NULL;
|
||||
pid_t pid = 0, self_pid;
|
||||
bool found = false;
|
||||
pid_t pid = 0;
|
||||
int r;
|
||||
|
||||
assert(path);
|
||||
|
||||
r = cg_enumerate_processes(controller, path, &f);
|
||||
if (r < 0)
|
||||
return r == -ENOENT ? 1 : r;
|
||||
|
||||
self_pid = getpid();
|
||||
|
||||
while ((r = cg_read_pid(f, &pid)) > 0) {
|
||||
|
||||
if (ignore_self && pid == self_pid)
|
||||
continue;
|
||||
|
||||
found = true;
|
||||
break;
|
||||
}
|
||||
|
||||
if (r == -ENOENT)
|
||||
return 1;
|
||||
if (r < 0)
|
||||
return r;
|
||||
|
||||
return !found;
|
||||
r = cg_read_pid(f, &pid);
|
||||
if (r < 0)
|
||||
return r;
|
||||
|
||||
return r == 0;
|
||||
}
|
||||
|
||||
int cg_is_empty_recursive(const char *controller, const char *path, bool ignore_self) {
|
||||
int cg_is_empty_recursive(const char *controller, const char *path) {
|
||||
_cleanup_closedir_ DIR *d = NULL;
|
||||
char *fn;
|
||||
int r;
|
||||
|
||||
assert(path);
|
||||
|
||||
r = cg_is_empty(controller, path, ignore_self);
|
||||
r = cg_is_empty(controller, path);
|
||||
if (r <= 0)
|
||||
return r;
|
||||
|
||||
r = cg_enumerate_subgroups(controller, path, &d);
|
||||
if (r == -ENOENT)
|
||||
return 1;
|
||||
if (r < 0)
|
||||
return r == -ENOENT ? 1 : r;
|
||||
return r;
|
||||
|
||||
while ((r = cg_read_subgroup(d, &fn)) > 0) {
|
||||
_cleanup_free_ char *p = NULL;
|
||||
@@ -943,7 +936,7 @@ int cg_is_empty_recursive(const char *controller, const char *path, bool ignore_
|
||||
if (!p)
|
||||
return -ENOMEM;
|
||||
|
||||
r = cg_is_empty_recursive(controller, p, ignore_self);
|
||||
r = cg_is_empty_recursive(controller, p);
|
||||
if (r <= 0)
|
||||
return r;
|
||||
}
|
||||
|
||||
@@ -93,8 +93,8 @@ int cg_set_task_access(const char *controller, const char *path, mode_t mode, ui
|
||||
int cg_install_release_agent(const char *controller, const char *agent);
|
||||
int cg_uninstall_release_agent(const char *controller);
|
||||
|
||||
int cg_is_empty(const char *controller, const char *path, bool ignore_self);
|
||||
int cg_is_empty_recursive(const char *controller, const char *path, bool ignore_self);
|
||||
int cg_is_empty(const char *controller, const char *path);
|
||||
int cg_is_empty_recursive(const char *controller, const char *path);
|
||||
|
||||
int cg_get_root_path(char **path);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user