From: Pavel Hrdina Date: Fri, 17 Aug 2018 14:49:08 +0000 (+0200) Subject: vircgroup: introduce virCgroupV2Remove X-Git-Tag: v4.9.0-rc1~87 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=4fe4847438c8ff042d6d39718b26023199e67c8a;p=thirdparty%2Flibvirt.git vircgroup: introduce virCgroupV2Remove Signed-off-by: Pavel Hrdina --- diff --git a/src/util/vircgroupv2.c b/src/util/vircgroupv2.c index 92d7ac33bd..8f8e3227c8 100644 --- a/src/util/vircgroupv2.c +++ b/src/util/vircgroupv2.c @@ -412,6 +412,25 @@ virCgroupV2MakeGroup(virCgroupPtr parent ATTRIBUTE_UNUSED, } +static int +virCgroupV2Remove(virCgroupPtr group) +{ + VIR_AUTOFREE(char *) grppath = NULL; + int controller; + + /* Don't delete the root group, if we accidentally + ended up in it for some reason */ + if (STREQ(group->unified.placement, "/")) + return 0; + + controller = virCgroupV2GetAnyController(group); + if (virCgroupV2PathOfController(group, controller, "", &grppath) < 0) + return 0; + + return virCgroupRemoveRecursively(grppath); +} + + virCgroupBackend virCgroupV2Backend = { .type = VIR_CGROUP_BACKEND_TYPE_V2, @@ -428,6 +447,7 @@ virCgroupBackend virCgroupV2Backend = { .getAnyController = virCgroupV2GetAnyController, .pathOfController = virCgroupV2PathOfController, .makeGroup = virCgroupV2MakeGroup, + .remove = virCgroupV2Remove, };