[libvirt PATCH 5/6] Make PATHs unique for a VM object instance

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



From: Shaju Abraham <shaju.abraham@xxxxxxxxxxx>

There are various config paths that a VM uses. The monitor paths and
other lib paths are examples. These paths are tied to the VM name or
UUID. The local migration breaks the assumption that there will be only
one VM with a unique UUID and name. During local migrations there can be
multiple VMs with same name and UUID in the same host. Append the
domain-id field to the path so that there is no duplication of path
names.

Signed-off-by: Shaju Abraham <shaju.abraham@xxxxxxxxxxx>
---
 src/qemu/qemu_conf.c   |  4 ++--
 src/qemu/qemu_domain.c | 16 ++++++++++------
 2 files changed, 12 insertions(+), 8 deletions(-)

diff --git a/src/qemu/qemu_conf.c b/src/qemu/qemu_conf.c
index 00801ef01b..6769736d58 100644
--- a/src/qemu/qemu_conf.c
+++ b/src/qemu/qemu_conf.c
@@ -1894,7 +1894,7 @@ qemuGetDomainHugepagePath(const virDomainDef *def,
     char *ret = NULL;
 
     if (base && domPath)
-        ret = g_strdup_printf("%s/%s", base, domPath);
+        ret = g_strdup_printf("%s/%s-%d", base, domPath, def->id);
     return ret;
 }
 
@@ -1962,7 +1962,7 @@ qemuGetMemoryBackingDomainPath(const virDomainDef *def,
         return -1;
 
     qemuGetMemoryBackingBasePath(cfg, &base);
-    *path = g_strdup_printf("%s/%s", base, shortName);
+    *path = g_strdup_printf("%s/%s-%d", base, shortName, def->id);
 
     return 0;
 }
diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c
index b0c0e1a19b..002c092cf8 100644
--- a/src/qemu/qemu_domain.c
+++ b/src/qemu/qemu_domain.c
@@ -2127,11 +2127,13 @@ qemuDomainSetPrivatePathsOld(virQEMUDriverPtr driver,
     virQEMUDriverConfigPtr cfg = virQEMUDriverGetConfig(driver);
 
     if (!priv->libDir)
-        priv->libDir = g_strdup_printf("%s/domain-%s", cfg->libDir, vm->def->name);
+        priv->libDir = g_strdup_printf("%s/domain-%s-%d", cfg->libDir,
+                                       vm->def->name, vm->def->id);
 
     if (!priv->channelTargetDir)
-        priv->channelTargetDir = g_strdup_printf("%s/domain-%s",
-                                                 cfg->channelTargetDir, vm->def->name);
+        priv->channelTargetDir = g_strdup_printf("%s/domain-%s-%d",
+                                                 cfg->channelTargetDir,
+                                                 vm->def->name, vm->def->id);
 
     virObjectUnref(cfg);
 }
@@ -2150,11 +2152,13 @@ qemuDomainSetPrivatePaths(virQEMUDriverPtr driver,
         goto cleanup;
 
     if (!priv->libDir)
-        priv->libDir = g_strdup_printf("%s/domain-%s", cfg->libDir, domname);
+        priv->libDir = g_strdup_printf("%s/domain-%s-%d", cfg->libDir, domname,
+                                       vm->def->id);
 
     if (!priv->channelTargetDir)
-        priv->channelTargetDir = g_strdup_printf("%s/domain-%s",
-                                                 cfg->channelTargetDir, domname);
+        priv->channelTargetDir = g_strdup_printf("%s/domain-%s-%d",
+                                                 cfg->channelTargetDir,
+                                                 domname, vm->def->id);
 
     ret = 0;
  cleanup:
-- 
2.24.1





[Index of Archives]     [Virt Tools]     [Libvirt Users]     [Lib OS Info]     [Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [KDE Users]     [Fedora Tools]

  Powered by Linux