From 3b782ce57235f8e3aa2f948d7e99bfea21e2a877 Mon Sep 17 00:00:00 2001 From: Chen Hanxiao Date: Fri, 28 Oct 2016 08:45:41 +0800 Subject: [PATCH] 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 --- src/qemu/qemu_driver.c | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) 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; }