[libvirt] [PATCH 08/10] libxl: support domain config modification in virDomainRestoreFlags

Jim Fehlig jfehlig at suse.com
Thu Feb 19 18:59:38 UTC 2015


Marek Marczykowski-Górecki wrote:
> Signed-off-by: Marek Marczykowski-Górecki <marmarek at invisiblethingslab.com>
> ---
>
> There was a discussion about calling virDomainDefCheckABIStability. The use
> case I have for this is to start multiple domains from the same savefile.

Interesting use case...

>  This require changing:
>  - UUID
>  - name
>  - IP address
>   

Did you mean mac address?  I don't see where the
virtDomain*CheckABIStability() functions check for changes to IP addresses.

> Those are exactly type of changes blocked by virDomainDefCheckABIStability.
> Perhaps some "permissive" mode should be introduced to the
> virDomainDefCheckABIStability function?
>   

I'd like to hear what others think about this proposal.  Are UUID and
name really part of a domain's ABI?

Regards,
Jim

>  src/libxl/libxl_driver.c | 17 ++++++++++++-----
>  1 file changed, 12 insertions(+), 5 deletions(-)
>
> diff --git a/src/libxl/libxl_driver.c b/src/libxl/libxl_driver.c
> index 005cc96..7539d33 100644
> --- a/src/libxl/libxl_driver.c
> +++ b/src/libxl/libxl_driver.c
> @@ -1456,11 +1456,6 @@ libxlDomainRestoreFlags(virConnectPtr conn, const char *from,
>  #endif
>  
>      virCheckFlags(VIR_DOMAIN_SAVE_PAUSED, -1);
> -    if (dxml) {
> -        virReportError(VIR_ERR_ARGUMENT_UNSUPPORTED, "%s",
> -                       _("xml modification unsupported"));
> -        return -1;
> -    }
>  
>      fd = libxlDomainSaveImageOpen(driver, cfg, from, &def, &hdr);
>      if (fd < 0)
> @@ -1469,6 +1464,18 @@ libxlDomainRestoreFlags(virConnectPtr conn, const char *from,
>      if (virDomainRestoreFlagsEnsureACL(conn, def) < 0)
>          goto cleanup_unlock;
>  
> +    if (dxml) {
> +        virDomainDefPtr def2 = NULL;
> +
> +        if (!(def2 = virDomainDefParseString(dxml, cfg->caps, driver->xmlopt,
> +                                        1 << VIR_DOMAIN_VIRT_XEN,
> +                                        VIR_DOMAIN_XML_INACTIVE))) {
> +            goto cleanup;
> +        }
> +        virDomainDefFree(def);
> +        def = def2;
> +    }
> +
>      if (!(vm = virDomainObjListAdd(driver->domains, def,
>                                     driver->xmlopt,
>                                     VIR_DOMAIN_OBJ_LIST_ADD_LIVE |
>   




More information about the libvir-list mailing list