[libvirt] [PATCH] Fix autostart flag when loading running domains

Wen Congyang wency at cn.fujitsu.com
Mon Jun 13 01:03:02 UTC 2011


At 06/11/2011 12:48 PM, Michael Chapman Write:
> Drivers load running persistent and transient domain configs before
> inactive persistent domain configs, however only the latter would set a
> domain's autostart flag. This mismatch between the loaded and on-disk
> state could later cause problems with "virsh autostart":
> 
>   # virsh autostart example
>   error: Failed to mark domain example as autostarted
>   error: Failed to create symlink '/etc/libvirt/qemu/autostart/example.xml to '/etc/libvirt/qemu/example.xml': File exists
> 
> This patch ensures the autostart flag is set correctly even when the
> domain is already defined.
> 
> Fixes:
> 
>   https://bugzilla.redhat.com/show_bug.cgi?id=632100
>   https://bugzilla.redhat.com/show_bug.cgi?id=675319
> 
> Signed-off-by: Michael Chapman <mike at very.puzzling.org>
> ---
>  src/conf/domain_conf.c |   13 +++++++------
>  1 files changed, 7 insertions(+), 6 deletions(-)
> 
> diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
> index 0d9fef4..5a6ff8b 100644
> --- a/src/conf/domain_conf.c
> +++ b/src/conf/domain_conf.c
> @@ -9859,21 +9859,22 @@ static virDomainObjPtr virDomainLoadConfig(virCapsPtr caps,
>                                        VIR_DOMAIN_XML_INACTIVE)))
>          goto error;
>  
> +    if ((autostartLink = virDomainConfigFile(autostartDir, name)) == NULL)
> +        goto error;
> +
> +    if ((autostart = virFileLinkPointsTo(autostartLink, configFile)) < 0)
> +        goto error;
> +
>      /* if the domain is already in our hashtable, we don't need to do
>       * anything further
>       */
>      if ((dom = virDomainFindByUUID(doms, def->uuid))) {
>          VIR_FREE(configFile);
>          virDomainDefFree(def);
> +        dom->autostart = autostart;

autostartLink should be freed here.

>          return dom;
>      }
>  
> -    if ((autostartLink = virDomainConfigFile(autostartDir, name)) == NULL)
> -        goto error;
> -
> -    if ((autostart = virFileLinkPointsTo(autostartLink, configFile)) < 0)
> -        goto error;
> -
>      if (!(dom = virDomainAssignDef(caps, doms, def, false)))
>          goto error;
>  




More information about the libvir-list mailing list