[libvirt] [PATCH] cgroup: Fix start VMs coincidently failed

Wangyufei (James) james.wangyufei at huawei.com
Thu Mar 20 07:24:55 UTC 2014


>From 0163328efa67da1d63e504c86e323db5affa378f Mon Sep 17 00:00:00 2001
From: Wang Yufei <james.wangyufei at huawei.com>
Date: Thu, 20 Mar 2014 07:14:01 +0000
Subject: [PATCH] cgroup: Fix start VMs coincidently failed
When I start multi VMs coincidently and any of the cgroup directories
named machine doesn't exist. There's a chance that VM start failed because
of creating directory failed:
Unable to initialize /machine cgroup: File exists
When the errno returned by mkdir in virCgroupMakeGroup is EEXIST,
we should pass it through and continue to start the VM.
Signed-off-by: Wang Yufei <james.wangyufei at huawei.com>
---
 src/util/vircgroup.c | 4 ++++
 1 file changed, 4 insertions(+)
diff --git a/src/util/vircgroup.c b/src/util/vircgroup.c
index c5925b1..a10d6f6 100644
--- a/src/util/vircgroup.c
+++ b/src/util/vircgroup.c
@@ -924,6 +924,10 @@ virCgroupMakeGroup(virCgroupPtr parent,
         if (!virFileExists(path)) {
             if (!create ||
                 mkdir(path, 0755) < 0) {
+                if (errno == EEXIST) {
+                    VIR_FREE(path);
+                    continue;
+                }
                 /* With a kernel that doesn't support multi-level directory
                  * for blkio controller, libvirt will fail and disable all
                  * other controllers even though they are available. So
-- 
1.7.12.4




More information about the libvir-list mailing list