]> xenbits.xensource.com Git - libvirt.git/commitdiff
vircgroup: refactor virCgroupNewPartition
authorPavel Hrdina <phrdina@redhat.com>
Mon, 2 Nov 2020 21:50:58 +0000 (22:50 +0100)
committerPavel Hrdina <phrdina@redhat.com>
Tue, 3 Nov 2020 20:26:32 +0000 (21:26 +0100)
The old code passed an absolute path to virCgroupNewFromParent() which
is not necessary. The code can take the current placement of parent
cgroup and append a relative path.

Signed-off-by: Pavel Hrdina <phrdina@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
src/util/vircgroup.c

index 6caeb2d7f47462db2cb1759a3a9b15ebd17fc5af..e0fe1dbf3ebb1f091e58ab9621be42c41cc54ac8 100644 (file)
@@ -896,6 +896,7 @@ virCgroupNewPartition(const char *path,
     g_autofree char *newPath = NULL;
     g_autoptr(virCgroup) parent = NULL;
     g_autoptr(virCgroup) newGroup = NULL;
+    char *partition = NULL;
 
     VIR_DEBUG("path=%s create=%d controllers=%x",
               path, create, controllers);
@@ -914,17 +915,26 @@ virCgroupNewPartition(const char *path,
 
     if (STRNEQ(newPath, "/")) {
         char *tmp;
-        g_autofree char *parentPath = g_strdup(newPath);
+        const char *parentPath;
 
-        tmp = strrchr(parentPath, '/');
-        tmp++;
+        tmp = strrchr(newPath, '/');
         *tmp = '\0';
 
+        if (tmp == newPath) {
+            parentPath = "/";
+        } else {
+            parentPath = newPath;
+        }
+
         if (virCgroupNew(parentPath, controllers, &parent) < 0)
             return -1;
+
+        partition = tmp + 1;
+    } else {
+        partition = newPath;
     }
 
-    if (virCgroupNewFromParent(parent, newPath, controllers, &newGroup) < 0)
+    if (virCgroupNewFromParent(parent, partition, controllers, &newGroup) < 0)
         return -1;
 
     if (parent) {