From: Pavel Hrdina Date: Wed, 14 Oct 2020 09:23:27 +0000 (+0200) Subject: vircgroup: extract virCgroupNewDetect from virCgroupNew X-Git-Tag: v6.10.0-rc1~365 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=234769b0d57ba6b1267b0e2925cfe35a0a2ac077;p=thirdparty%2Flibvirt.git vircgroup: extract virCgroupNewDetect from virCgroupNew The current code uses virCgroupNew() as a single point of entry and calls into virCgroupDetect() as well. Both have logic for several paths which is difficult to figure out. Extract the actually used code path from the two functions to make it obvious what's happening in this case. Signed-off-by: Pavel Hrdina Reviewed-by: Michal Privoznik --- diff --git a/src/util/vircgroup.c b/src/util/vircgroup.c index f21a581946..97e15c0ab3 100644 --- a/src/util/vircgroup.c +++ b/src/util/vircgroup.c @@ -1048,7 +1048,28 @@ virCgroupNewDetect(pid_t pid, int controllers, virCgroupPtr *group) { - return virCgroupNew(pid, "", NULL, controllers, group); + g_autoptr(virCgroup) new = g_new0(virCgroup, 1); + + VIR_DEBUG("pid=%lld controllers=%d group=%p", + (long long) pid, controllers, group); + + if (virCgroupSetBackends(new) < 0) + return -1; + + if (virCgroupDetectMounts(new) < 0) + return -1; + + if (virCgroupDetectPlacement(new, pid, "") < 0) + return -1; + + if (virCgroupValidatePlacement(new, pid) < 0) + return -1; + + if (virCgroupDetectControllers(new, controllers, NULL) < 0) + return -1; + + *group = g_steal_pointer(&new); + return 0; }