return 0;
}
-int cg_rmdir(const char *controller, const char *path) {
- _cleanup_free_ char *p = NULL;
- int r;
-
- r = cg_get_path(controller, path, NULL, &p);
- if (r < 0)
- return r;
-
- r = rmdir(p);
- if (r < 0 && errno != ENOENT)
- return -errno;
-
- r = cg_hybrid_unified();
- if (r <= 0)
- return r;
-
- if (streq(controller, SYSTEMD_CGROUP_CONTROLLER)) {
- r = cg_rmdir(SYSTEMD_CGROUP_CONTROLLER_LEGACY, path);
- if (r < 0)
- log_warning_errno(r, "Failed to remove compat systemd cgroup %s: %m", path);
- }
-
- return 0;
-}
-
static int cg_kill_items(
const char *path,
int sig,
}
}
- if (FLAGS_SET(flags, CGROUP_REMOVE)) {
- r = cg_rmdir(SYSTEMD_CGROUP_CONTROLLER, path);
- if (!IN_SET(r, -ENOENT, -EBUSY))
- RET_GATHER(ret, log_debug_errno(r, "Failed to remove cgroup '%s': %m", path));
- }
-
return ret;
}
typedef enum CGroupFlags {
CGROUP_SIGCONT = 1 << 0,
CGROUP_IGNORE_SELF = 1 << 1,
- CGROUP_REMOVE = 1 << 2,
- CGROUP_DONT_SKIP_UNMAPPED = 1 << 3,
- CGROUP_NO_PIDFD = 1 << 4,
+ CGROUP_DONT_SKIP_UNMAPPED = 1 << 2,
+ CGROUP_NO_PIDFD = 1 << 3,
} CGroupFlags;
int cg_enumerate_processes(const char *controller, const char *path, FILE **ret);
int cg_pid_get_path(const char *controller, pid_t pid, char **ret);
int cg_pidref_get_path(const char *controller, const PidRef *pidref, char **ret);
-int cg_rmdir(const char *controller, const char *path);
-
int cg_is_threaded(const char *path);
int cg_is_delegated(const char *path);
if (r < 0 && ret >= 0)
ret = r;
- if (flags & CGROUP_REMOVE) {
- r = cg_rmdir(cfrom, pfrom);
- if (r < 0 && ret >= 0 && !IN_SET(r, -ENOENT, -EBUSY))
- return r;
- }
-
return ret;
}
assert_se(cg_kill_recursive(test_a, 0, 0, NULL, NULL, NULL) > 0);
assert_se(cg_kill_recursive(test_b, 0, 0, NULL, NULL, NULL) == 0);
- (void) cg_trim(SYSTEMD_CGROUP_CONTROLLER, test_b, false);
-
- assert_se(cg_rmdir(SYSTEMD_CGROUP_CONTROLLER, test_b) == 0);
- assert_se(cg_rmdir(SYSTEMD_CGROUP_CONTROLLER, test_a) < 0);
- assert_se(cg_migrate_recursive(SYSTEMD_CGROUP_CONTROLLER, test_a, SYSTEMD_CGROUP_CONTROLLER, here, 0) > 0);
- assert_se(cg_rmdir(SYSTEMD_CGROUP_CONTROLLER, test_a) == 0);
+ ASSERT_OK(cg_trim(SYSTEMD_CGROUP_CONTROLLER, test_b, true));
}
TEST(id) {