]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
LXC: hostdev: introduce lxcContainerSetupHostdevCapsMakePath
authorGao feng <gaofeng@cn.fujitsu.com>
Tue, 9 Jul 2013 10:15:11 +0000 (11:15 +0100)
committerDaniel P. Berrange <berrange@redhat.com>
Tue, 18 Feb 2014 17:07:33 +0000 (17:07 +0000)
This helper function is used to create parent directory for
the hostdev which will be added to the container. If the
parent directory of this hostdev doesn't exist, the mknod of
the hostdev will fail. eg with /dev/net/tun

Signed-off-by: Gao feng <gaofeng@cn.fujitsu.com>
(cherry picked from commit c0d8c7c88579c612cf8a9776d276f8fd59d779f3)

src/lxc/lxc_container.c
src/lxc/lxc_container.h

index ade001f22e30bf605879bd114b9fb29156dfa88d..6554f0a39cda49ab671a1f121164dcd4b3f86da9 100644 (file)
@@ -1543,6 +1543,32 @@ cleanup:
 }
 
 
+int lxcContainerSetupHostdevCapsMakePath(const char *dev)
+{
+    int ret = -1;
+    char *dir, *tmp;
+
+    if (VIR_STRDUP(dir, dev) < 0)
+        return -1;
+
+    if ((tmp = strrchr(dir, '/'))) {
+        *tmp = '\0';
+        if (virFileMakePath(dir) < 0) {
+            virReportSystemError(errno,
+                                 _("Failed to create directory for '%s' dev '%s'"),
+                                 dir, dev);
+            goto cleanup;
+        }
+    }
+
+    ret = 0;
+
+cleanup:
+    VIR_FREE(dir);
+    return ret;
+}
+
+
 static int lxcContainerSetupHostdevCapsStorage(virDomainDefPtr vmDef ATTRIBUTE_UNUSED,
                                                virDomainHostdevDefPtr def ATTRIBUTE_UNUSED,
                                                virSecurityManagerPtr securityDriver ATTRIBUTE_UNUSED)
index ada72f70d709719a602f819691175e81decc5621..6f270d7f7a81f52f0ff5573f8af1e55fda2e1d81 100644 (file)
@@ -63,6 +63,8 @@ int lxcContainerStart(virDomainDefPtr def,
 
 int lxcContainerAvailable(int features);
 
+int lxcContainerSetupHostdevCapsMakePath(const char *dev);
+
 virArch lxcContainerGetAlt32bitArch(virArch arch);
 
 #endif /* LXC_CONTAINER_H */