[libvirt] [PATCH RESEND] qemu_driver: unlink new domain cfg file when rollback

Michal Privoznik mprivozn at redhat.com
Fri Oct 28 11:29:30 UTC 2016


On 27.10.2016 17:45, Chen Hanxiao wrote:
> From: Chen Hanxiao <chenhanxiao at gmail.com>
> 
> 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 at gmail.com>
> ---
>  src/qemu/qemu_driver.c | 11 +++++++++++
>  1 file changed, 11 insertions(+)
> 
> diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
> index e6f845d..3f4a2fb 100644
> --- a/src/qemu/qemu_driver.c
> +++ b/src/qemu/qemu_driver.c
> @@ -19869,6 +19869,7 @@ qemuDomainRenameCallback(virDomainObjPtr vm,
>      char *new_dom_name = NULL;
>      char *old_dom_name = NULL;
>      char *old_dom_cfg_file = NULL;
> +    char *new_dom_cfg_file = NULL;

This could be moved one line up, so that it matches the pattern.

>  
>      virCheckFlags(0, ret);
>  
> @@ -19882,6 +19883,11 @@ qemuDomainRenameCallback(virDomainObjPtr vm,
>          goto cleanup;
>      }
>  
> +    if (!(new_dom_cfg_file = virDomainConfigFile(cfg->configDir,
> +                                                 new_dom_name))) {
> +        goto cleanup;
> +    }
> +

Whoa, I'm really surprised that our syntax-check does not catch this. It
has a one line body therefore there shouldn't be any curly braces around
it. Also, this could be joined with previous condition.

>      event_old = virDomainEventLifecycleNewFromObj(vm,
>                                              VIR_DOMAIN_EVENT_UNDEFINED,
>                                              VIR_DOMAIN_EVENT_UNDEFINED_RENAMED);
> @@ -19909,6 +19915,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);
> @@ -19922,6 +19929,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;
>  }
>  
> 

ACKed and pushed.

Michal




More information about the libvir-list mailing list