]> git.ipfire.org Git - pakfire.git/commitdiff
cgroups: Don't automatically kill when destroying a cgroup
authorMichael Tremer <michael.tremer@ipfire.org>
Sat, 14 Dec 2024 14:37:06 +0000 (14:37 +0000)
committerMichael Tremer <michael.tremer@ipfire.org>
Sat, 14 Dec 2024 14:37:06 +0000 (14:37 +0000)
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
src/libpakfire/cgroup.c
src/libpakfire/include/pakfire/cgroup.h

index 477325cce6015db78e7b0efb8531ec83bfe405e4..5bef076d1d73aa0451aa052d1d0a57cfb7a45463 100644 (file)
@@ -478,16 +478,6 @@ struct pakfire_cgroup* pakfire_cgroup_unref(struct pakfire_cgroup* cgroup) {
        return NULL;
 }
 
-/*
-       Immediately kills all processes in this cgroup
-*/
-static int pakfire_cgroup_killall(struct pakfire_cgroup* cgroup) {
-       DEBUG(cgroup->ctx, "Killing all processes in %s\n",
-               pakfire_cgroup_path(cgroup));
-
-       return pakfire_cgroup_write(cgroup, "cgroup.kill", "1");
-}
-
 int pakfire_cgroup_child(struct pakfire_cgroup** child,
                struct pakfire_cgroup* cgroup, const char* path, int flags) {
        return pakfire_cgroup_open(child, cgroup->ctx, cgroup, path, flags);
@@ -505,11 +495,6 @@ int pakfire_cgroup_destroy(struct pakfire_cgroup* cgroup) {
 
        DEBUG(cgroup->ctx, "Destroying cgroup %s\n", pakfire_cgroup_path(cgroup));
 
-       // Kill everything in this group
-       r = pakfire_cgroup_killall(cgroup);
-       if (r)
-               return r;
-
        // Delete the directory
        r = unlinkat(cgroup->parent->fd, cgroup->name, AT_REMOVEDIR);
        if (r) {
@@ -530,6 +515,16 @@ int pakfire_cgroup_fd(struct pakfire_cgroup* cgroup) {
        return cgroup->fd;
 }
 
+/*
+       Immediately kills all processes in this cgroup
+*/
+int pakfire_cgroup_killall(struct pakfire_cgroup* cgroup) {
+       DEBUG(cgroup->ctx, "Killing all processes in %s\n",
+               pakfire_cgroup_path(cgroup));
+
+       return pakfire_cgroup_write(cgroup, "cgroup.kill", "1");
+}
+
 // Accounting
 
 int pakfire_cgroup_enable_accounting(struct pakfire_cgroup* cgroup) {
index 443f101ea206fcf3e87dad71bf73a6bbc1b6fa16..f3d94139cb2902876e23b32dc634fd1b0753191e 100644 (file)
@@ -218,6 +218,9 @@ int pakfire_cgroup_destroy(struct pakfire_cgroup* cgroup);
 
 int pakfire_cgroup_fd(struct pakfire_cgroup* cgroup);
 
+// Killall
+int pakfire_cgroup_killall(struct pakfire_cgroup* cgroup);
+
 // Accounting
 int pakfire_cgroup_enable_accounting(struct pakfire_cgroup* cgroup);