[libvirt] [PATCH] conf: Assign newDef of active domain as persistent conf if it is NULL

Osier Yang jyang at redhat.com
Mon Sep 5 14:29:17 UTC 2011


于 2011年09月01日 21:44, Osier Yang 写道:
> Libvirt loads the domain conf from status XML if it's running when
> starting up. The problem is there is no record of the original conf.
> (dom->newDef is NULL here).
>
> So libvirt won't be able to restore the domain conf to original one
> when destroying/shutdown. E.g.
>
> 1) attach a device without "--persistent"
> 2) restart libvirtd
> 3) destroy domain
> 4) start domain
>
> One will see the the disk still exists.
>
> This patch is to fix the peoblem by assigning persistent domain conf
> to dom->newDef if it's NULL and the domain is running.
> ---
>  src/conf/domain_conf.c |    8 +++++++-
>  1 files changed, 7 insertions(+), 1 deletions(-)
>
> diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
> index 00212db..cbb99d3 100644
> --- a/src/conf/domain_conf.c
> +++ b/src/conf/domain_conf.c
> @@ -10533,9 +10533,15 @@ static virDomainObjPtr virDomainLoadConfig(virCapsPtr caps,
>      if ((dom = virDomainFindByUUID(doms, def->uuid))) {
>          dom->autostart = autostart;
>  
> +        if (virDomainObjIsActive(dom) &&
> +            !dom->newDef) {
> +            virDomainObjAssignDef(dom, def, false);
> +        } else {
> +            virDomainDefFree(def);
> +        }
> +
>          VIR_FREE(configFile);
>          VIR_FREE(autostartLink);
> -        virDomainDefFree(def);
>          return dom;
>      }
>  

With my testing, this patch solve the problem well. Could
someone review/ACK this? Thanks

Osier




More information about the libvir-list mailing list