From eb34399624d2b2ffbbcd7db9727558f51c1d0ad9 Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Sat, 14 Dec 2024 14:37:06 +0000 Subject: [PATCH] cgroups: Don't automatically kill when destroying a cgroup Signed-off-by: Michael Tremer --- src/libpakfire/cgroup.c | 25 ++++++++++--------------- src/libpakfire/include/pakfire/cgroup.h | 3 +++ 2 files changed, 13 insertions(+), 15 deletions(-) diff --git a/src/libpakfire/cgroup.c b/src/libpakfire/cgroup.c index 477325cce..5bef076d1 100644 --- a/src/libpakfire/cgroup.c +++ b/src/libpakfire/cgroup.c @@ -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) { diff --git a/src/libpakfire/include/pakfire/cgroup.h b/src/libpakfire/include/pakfire/cgroup.h index 443f101ea..f3d94139c 100644 --- a/src/libpakfire/include/pakfire/cgroup.h +++ b/src/libpakfire/include/pakfire/cgroup.h @@ -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); -- 2.47.3