]> xenbits.xensource.com Git - libvirt.git/commitdiff
qemu_driver: unlink new domain cfg file when rollback
authorChen Hanxiao <chenhanxiao@gmail.com>
Fri, 28 Oct 2016 00:45:41 +0000 (08:45 +0800)
committerMichal Privoznik <mprivozn@redhat.com>
Fri, 28 Oct 2016 11:13:05 +0000 (04:13 -0700)
If we failed to unlink old dom cfg file, we goto rollback.
But inside rollback, we fogot to unlink the new dom cfg file.
This patch fixes this issue.

Signed-off-by: Chen Hanxiao <chenhanxiao@gmail.com>
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
src/qemu/qemu_driver.c

index 8d0399ef153706cbaed264b0e0da391fad60c555..b8cec49bbbff4cc27bb8e9d086025cf6843f4711 100644 (file)
@@ -19907,6 +19907,7 @@ qemuDomainRenameCallback(virDomainObjPtr vm,
     int ret = -1;
     char *new_dom_name = NULL;
     char *old_dom_name = NULL;
+    char *new_dom_cfg_file = NULL;
     char *old_dom_cfg_file = NULL;
 
     virCheckFlags(0, ret);
@@ -19916,10 +19917,11 @@ qemuDomainRenameCallback(virDomainObjPtr vm,
     if (VIR_STRDUP(new_dom_name, new_name) < 0)
         goto cleanup;
 
-    if (!(old_dom_cfg_file = virDomainConfigFile(cfg->configDir,
-                                                 vm->def->name))) {
+    if (!(new_dom_cfg_file = virDomainConfigFile(cfg->configDir,
+                                                 new_dom_name)) ||
+        !(old_dom_cfg_file = virDomainConfigFile(cfg->configDir,
+                                                 vm->def->name)))
         goto cleanup;
-    }
 
     event_old = virDomainEventLifecycleNewFromObj(vm,
                                             VIR_DOMAIN_EVENT_UNDEFINED,
@@ -19948,6 +19950,7 @@ qemuDomainRenameCallback(virDomainObjPtr vm,
 
  cleanup:
     VIR_FREE(old_dom_cfg_file);
+    VIR_FREE(new_dom_cfg_file);
     VIR_FREE(old_dom_name);
     VIR_FREE(new_dom_name);
     qemuDomainEventQueue(driver, event_old);
@@ -19961,6 +19964,10 @@ qemuDomainRenameCallback(virDomainObjPtr vm,
         vm->def->name = old_dom_name;
         old_dom_name = NULL;
     }
+
+    if (virFileExists(new_dom_cfg_file))
+        unlink(new_dom_cfg_file);
+
     goto cleanup;
 }