[libvirt] [PATCH 3/8] qemu: Move preserved mount points path generation into a separate function

Michal Privoznik mprivozn at redhat.com
Thu Jun 22 16:18:30 UTC 2017


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 at redhat.com>
---
 src/qemu/qemu_domain.c | 59 ++++++++++++++++++++++++++++++--------------------
 1 file changed, 36 insertions(+), 23 deletions(-)

diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c
index 212717c80..286d60761 100644
--- a/src/qemu/qemu_domain.c
+++ b/src/qemu/qemu_domain.c
@@ -7572,6 +7572,41 @@ qemuDomainGetHostdevPath(virDomainDefPtr def,
 }
 
 
+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:
  *
@@ -7628,30 +7663,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)
-- 
2.13.0




More information about the libvir-list mailing list