[libvirt] [PATCH RFC 5/7] virfile: Introduce virFileBindMountDevice

Michal Privoznik mprivozn at redhat.com
Mon Nov 14 16:43:29 UTC 2016


Signed-off-by: Michal Privoznik <mprivozn at redhat.com>
---
 src/libvirt_private.syms |  1 +
 src/lxc/lxc_container.c  | 20 +++-----------------
 src/util/virfile.c       | 16 ++++++++++++++++
 src/util/virfile.h       |  2 ++
 4 files changed, 22 insertions(+), 17 deletions(-)

diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms
index 9653247..c8dea1f 100644
--- a/src/libvirt_private.syms
+++ b/src/libvirt_private.syms
@@ -1556,6 +1556,7 @@ virDirRead;
 virFileAbsPath;
 virFileAccessibleAs;
 virFileActivateDirOverride;
+virFileBindMountDevice;
 virFileBuildPath;
 virFileClose;
 virFileDeleteTree;
diff --git a/src/lxc/lxc_container.c b/src/lxc/lxc_container.c
index 5357df4..5d7da8f 100644
--- a/src/lxc/lxc_container.c
+++ b/src/lxc/lxc_container.c
@@ -1112,20 +1112,6 @@ static int lxcContainerMountFSDevPTS(virDomainDefPtr def,
     return ret;
 }
 
-static int lxcContainerBindMountDevice(const char *src, const char *dst)
-{
-    if (virFileTouch(dst, 0666) < 0)
-        return -1;
-
-    if (mount(src, dst, "none", MS_BIND, NULL) < 0) {
-        virReportSystemError(errno, _("Failed to bind %s on to %s"), src,
-                             dst);
-        return -1;
-    }
-
-    return 0;
-}
-
 static int lxcContainerSetupDevices(char **ttyPaths, size_t nttyPaths)
 {
     size_t i;
@@ -1149,7 +1135,7 @@ static int lxcContainerSetupDevices(char **ttyPaths, size_t nttyPaths)
     }
 
     /* We have private devpts capability, so bind that */
-    if (lxcContainerBindMountDevice("/dev/pts/ptmx", "/dev/ptmx") < 0)
+    if (virFileBindMountDevice("/dev/pts/ptmx", "/dev/ptmx") < 0)
         return -1;
 
     for (i = 0; i < nttyPaths; i++) {
@@ -1157,7 +1143,7 @@ static int lxcContainerSetupDevices(char **ttyPaths, size_t nttyPaths)
         if (virAsprintf(&tty, "/dev/tty%zu", i+1) < 0)
             return -1;
 
-        if (lxcContainerBindMountDevice(ttyPaths[i], tty) < 0) {
+        if (virFileBindMountDevice(ttyPaths[i], tty) < 0) {
             return -1;
             VIR_FREE(tty);
         }
@@ -1165,7 +1151,7 @@ static int lxcContainerSetupDevices(char **ttyPaths, size_t nttyPaths)
         VIR_FREE(tty);
 
         if (i == 0 &&
-            lxcContainerBindMountDevice(ttyPaths[i], "/dev/console") < 0)
+            virFileBindMountDevice(ttyPaths[i], "/dev/console") < 0)
             return -1;
     }
     return 0;
diff --git a/src/util/virfile.c b/src/util/virfile.c
index aa81ae3..0ddca01 100644
--- a/src/util/virfile.c
+++ b/src/util/virfile.c
@@ -3601,3 +3601,19 @@ virFileSetupDevPTS(const char *path,
     VIR_FREE(devptmx);
     return ret;
 }
+
+
+int
+virFileBindMountDevice(const char *src, const char *dst)
+{
+    if (virFileTouch(dst, 0666) < 0)
+        return -1;
+
+    if (mount(src, dst, "none", MS_BIND, NULL) < 0) {
+        virReportSystemError(errno, _("Failed to bind %s on to %s"), src,
+                             dst);
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/src/util/virfile.h b/src/util/virfile.h
index 2dab6e7..23a5afb 100644
--- a/src/util/virfile.h
+++ b/src/util/virfile.h
@@ -326,4 +326,6 @@ int virFileSetupDev(const char *path,
 int virFileSetupDevPTS(const char *path,
                        const char *mount_options,
                        char **ptmx_ret);
+
+int virFileBindMountDevice(const char *src, const char *dst);
 #endif /* __VIR_FILE_H */
-- 
2.8.4




More information about the libvir-list mailing list