]> xenbits.xensource.com Git - libvirt.git/commitdiff
qemu: Move preserved mount points path generation into a separate function
authorMichal Privoznik <mprivozn@redhat.com>
Thu, 15 Jun 2017 13:48:52 +0000 (15:48 +0200)
committerMichal Privoznik <mprivozn@redhat.com>
Tue, 11 Jul 2017 12:45:15 +0000 (14:45 +0200)
This function is going to be used on other places, so
instead of copying code we can just call the function.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: John Ferlan <jferlan@redhat.com>
src/qemu/qemu_domain.c

index 6bec01c0fa5f34f157c04c510f2f0652c859cc25..cde5a8e6af7f2ce7ca9e1bb9a5fb6729eca8beeb 100644 (file)
@@ -7573,6 +7573,53 @@ qemuDomainGetHostdevPath(virDomainDefPtr def,
 }
 
 
+/**
+ * qemuDomainGetPreservedMountPath:
+ * @cfg: driver configuration data
+ * @vm: domain object
+ * @mount: mount point path to convert
+ *
+ * For given @mount point return new path where the mount point
+ * should be moved temporarily whilst building the namespace.
+ *
+ * Returns: allocated string on success which the caller must free,
+ *          NULL on failure.
+ */
+static char *
+qemuDomainGetPreservedMountPath(virQEMUDriverConfigPtr cfg,
+                                virDomainObjPtr vm,
+                                const char *mount)
+{
+    char *path = NULL;
+    char *tmp;
+    const char *suffix = mount + strlen(DEVPREFIX);
+    size_t off;
+
+    if (STREQ(mount, "/dev"))
+        suffix = "dev";
+
+    if (virAsprintf(&path, "%s/%s.%s",
+                    cfg->stateDir, vm->def->name, suffix) < 0)
+        return NULL;
+
+    /* Now consider that @mount is "/dev/blah/blah2".
+     * @suffix then points to "blah/blah2". However, caller
+     * expects all the @paths to be the same depth. The
+     * caller doesn't always do `mkdir -p` but sometimes bare
+     * `touch`. Therefore fix all the suffixes. */
+    off = strlen(path) - strlen(suffix);
+
+    tmp = path + off;
+    while (*tmp) {
+        if (*tmp == '/')
+            *tmp = '.';
+        tmp++;
+    }
+
+    return path;
+}
+
+
 /**
  * qemuDomainGetPreservedMounts:
  *
@@ -7629,30 +7676,8 @@ qemuDomainGetPreservedMounts(virQEMUDriverConfigPtr cfg,
         goto error;
 
     for (i = 0; i < nmounts; i++) {
-        char *tmp;
-        const char *suffix = mounts[i] + strlen(DEVPREFIX);
-        size_t off;
-
-        if (STREQ(mounts[i], "/dev"))
-            suffix = "dev";
-
-        if (virAsprintf(&paths[i], "%s/%s.%s",
-                        cfg->stateDir, vm->def->name, suffix) < 0)
+        if (!(paths[i] = qemuDomainGetPreservedMountPath(cfg, vm, mounts[i])))
             goto error;
-
-        /* Now consider that mounts[i] is "/dev/blah/blah2".
-         * @suffix then points to "blah/blah2". However, caller
-         * expects all the @paths to be the same depth. The
-         * caller doesn't always do `mkdir -p` but sometimes bare
-         * `touch`. Therefore fix all the suffixes. */
-        off = strlen(paths[i]) - strlen(suffix);
-
-        tmp = paths[i] + off;
-        while (*tmp) {
-            if (*tmp == '/')
-                *tmp = '.';
-            tmp++;
-        }
     }
 
     if (devPath)