From ae5155768f5bc7af6450c657e1f2fe1f4a129c57 Mon Sep 17 00:00:00 2001 From: Hu Tao Date: Mon, 7 Mar 2011 11:49:12 +0800 Subject: [PATCH] Don't return an error on failure to create blkio controller This patch enables cgroup controllers as much as possible by skipping the creation of blkio controller when running with old kernels that doesn't support multi-level directory for blkio controller. Signed-off-by: Hu Tao Signed-off-by: Eric Blake --- src/util/cgroup.c | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/src/util/cgroup.c b/src/util/cgroup.c index 9a41a62dc3..afe873118a 100644 --- a/src/util/cgroup.c +++ b/src/util/cgroup.c @@ -527,9 +527,20 @@ static int virCgroupMakeGroup(virCgroupPtr parent, virCgroupPtr group, if (access(path, F_OK) != 0) { if (!create || mkdir(path, 0755) < 0) { - rc = -errno; - VIR_FREE(path); - break; + /* 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 + * treat blkio as unmounted if mkdir fails. */ + if (i == VIR_CGROUP_CONTROLLER_BLKIO) { + rc = 0; + VIR_FREE(group->controllers[i].mountPoint); + VIR_FREE(path); + continue; + } else { + rc = -errno; + VIR_FREE(path); + break; + } } if (group->controllers[VIR_CGROUP_CONTROLLER_CPUSET].mountPoint != NULL && (i == VIR_CGROUP_CONTROLLER_CPUSET || -- GitLab