if (!(s = set_new(trivial_hash_func, trivial_compare_func)))
return -ENOMEM;
- log_debug("Killing processes from process group %s:%s", b->controller, b->path);
-
do {
void *iterator;
pid_t pid;
}
}
- log_info("Using cgroup controller <%s>, hierarchy mounted at <%s>, using root group <%s>.",
- m->cgroup_controller,
- mp,
- m->cgroup_hierarchy);
+ log_debug("Using cgroup controller <%s>, hierarchy mounted at <%s>, using root group <%s>.",
+ m->cgroup_controller,
+ mp,
+ m->cgroup_hierarchy);
if ((r = install_release_agent(m, mp)) < 0)
log_warning("Failed to install release agent, ignoring: %s", strerror(-r));
else
- log_info("Installed release agent, or already installed.");
+ log_debug("Installed release agent, or already installed.");
free(mp);
if ((r = create_hierarchy_cgroup(m)) < 0)
log_error("Failed to create root cgroup hierarchy: %s", strerror(-r));
else
- log_info("Created root group.");
+ log_debug("Created root group.");
return r;
}
-int manager_shutdown_cgroup(Manager *m) {
+int manager_shutdown_cgroup(Manager *m, bool delete) {
struct cgroup *cg;
int r;
goto finish;
}
- if ((r = cgroup_delete_cgroup_ext(cg, CGFLAG_DELETE_IGNORE_MIGRATION|CGFLAG_DELETE_RECURSIVE)) != 0) {
- log_error("Failed to delete cgroup hierarchy group: %s", cgroup_strerror(r));
- r = translate_error(r, errno);
- goto finish;
- }
+ /* Often enough we won't be able to delete the cgroup we
+ * ourselves are in, hence ignore all errors here */
+ if (delete)
+ cgroup_delete_cgroup_ext(cg, CGFLAG_DELETE_IGNORE_MIGRATION|CGFLAG_DELETE_RECURSIVE);
r = 0;
finish: