]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
libvirt: lxc: don't mkdir when selinux is disabled
authorGao feng <gaofeng@cn.fujitsu.com>
Wed, 9 Jan 2013 11:20:59 +0000 (19:20 +0800)
committerEric Blake <eblake@redhat.com>
Tue, 15 Jan 2013 19:01:22 +0000 (12:01 -0700)
libvirt lxc will fail to start when selinux is disabled.
error: Failed to start domain noroot
error: internal error guest failed to start: PATH=/bin:/sbin TERM=linux container=lxc-libvirt container_uuid=b9873916-3516-c199-8112-1592ff694a9e LIBVIRT_LXC_UUID=b9873916-3516-c199-8112-1592ff694a9e LIBVIRT_LXC_NAME=noroot /bin/sh
2013-01-09 11:04:05.384+0000: 1: info : libvirt version: 1.0.1
2013-01-09 11:04:05.384+0000: 1: error : lxcContainerMountBasicFS:546 : Failed to mkdir /sys/fs/selinux: No such file or directory
2013-01-09 11:04:05.384+0000: 7536: info : libvirt version: 1.0.1
2013-01-09 11:04:05.384+0000: 7536: error : virLXCControllerRun:1466 : error receiving signal from container: Input/output error
2013-01-09 11:04:05.404+0000: 7536: error : virCommandWait:2287 : internal error Child process (ip link del veth1) unexpected exit status 1: Cannot find device "veth1"

fix this problem by checking if selinuxfs is mounted
in host before we try to create dir /sys/fs/selinux.

Signed-off-by: Gao feng <gaofeng@cn.fujitsu.com>
src/lxc/lxc_container.c

index 25701fe78a96ce23d50421a2141f223ab835eb8b..497539c8740b31329321d4647396b39dde533c2e 100644 (file)
@@ -540,13 +540,6 @@ static int lxcContainerMountBasicFS(bool pivotRoot,
         VIR_DEBUG("Processing %s -> %s",
                   mnts[i].src, mnts[i].dst);
 
-        if (virFileMakePath(mnts[i].dst) < 0) {
-            virReportSystemError(errno,
-                                 _("Failed to mkdir %s"),
-                                 mnts[i].src);
-            goto cleanup;
-        }
-
         srcpath = mnts[i].src;
 
         /* Skip if mount doesn't exist in source */
@@ -554,6 +547,13 @@ static int lxcContainerMountBasicFS(bool pivotRoot,
             (access(srcpath, R_OK) < 0))
             continue;
 
+        if (virFileMakePath(mnts[i].dst) < 0) {
+            virReportSystemError(errno,
+                                 _("Failed to mkdir %s"),
+                                 mnts[i].src);
+            goto cleanup;
+        }
+
         VIR_DEBUG("Mount %s on %s type=%s flags=%x, opts=%s",
                   srcpath, mnts[i].dst, mnts[i].type, mnts[i].mflags, mnts[i].opts);
         if (mount(srcpath, mnts[i].dst, mnts[i].type, mnts[i].mflags, mnts[i].opts) < 0) {