From: Chen Hanxiao Date: Fri, 28 Oct 2016 00:45:41 +0000 (+0800) Subject: qemu_driver: unlink new domain cfg file when rollback X-Git-Tag: v2.4.0-rc2~2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=3b782ce57235f8e3aa2f948d7e99bfea21e2a877;p=thirdparty%2Flibvirt.git qemu_driver: unlink new domain cfg file when rollback 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 Signed-off-by: Michal Privoznik --- diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index 8d0399ef15..b8cec49bbb 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -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; }