[libvirt] [PATCH] managedsave: prohibit use on transient domains

Daniel Veillard veillard at redhat.com
Thu Aug 11 02:19:07 UTC 2011


On Wed, Aug 10, 2011 at 08:54:20AM -0600, Eric Blake wrote:
> Transient domains reject attempts to set autostart, and using
> virDomainCreate to restart a domain only works on persistent
> domains.  Therefore, managed save makes no sense on transient
> domains, and should be rejected up front rather than creating
> an otherwise unrecoverable managed save file.
> 
> * src/libvirt.c: Document that transient domains are incompatible
> with managed save.
> * src/qemu/qemu_driver.c (qemuDomainManagedSave): Enforce it.
> * src/libxl/libxl_driver.c (libxlDomainManagedSave): Likewise.
> ---
> 
> As evidence to my bias towards prohibiting managed save on
> transient domains...
> 
>  src/libvirt.c            |    3 +++
>  src/libxl/libxl_driver.c |    5 +++++
>  src/qemu/qemu_driver.c   |    5 +++++
>  3 files changed, 13 insertions(+), 0 deletions(-)
> 
> diff --git a/src/libvirt.c b/src/libvirt.c
> index c154c7d..c8af3e1 100644
> --- a/src/libvirt.c
> +++ b/src/libvirt.c
> @@ -15285,6 +15285,9 @@ error:
>   * the saved state itself, and will reuse it once the domain is being
>   * restarted (automatically or via an explicit libvirt call).
>   * As a result any running domain is sure to not have a managed saved image.
> + * This also implies that managed save only works on persistent domains,
> + * since the domain must still exist in order to use virDomainCreate() to
> + * restart it.
>   *
>   * If @flags includes VIR_DOMAIN_SAVE_BYPASS_CACHE, then libvirt will
>   * attempt to bypass the file system cache while creating the file, or
> diff --git a/src/libxl/libxl_driver.c b/src/libxl/libxl_driver.c
> index 7cb3620..516148f 100644
> --- a/src/libxl/libxl_driver.c
> +++ b/src/libxl/libxl_driver.c
> @@ -2132,6 +2132,11 @@ libxlDomainManagedSave(virDomainPtr dom, unsigned int flags)
>          libxlError(VIR_ERR_OPERATION_INVALID, "%s", _("Domain is not running"));
>          goto cleanup;
>      }
> +    if (!vm->persistent) {
> +        libxlError(VIR_ERR_OPERATION_INVALID, "%s",
> +                   _("cannot do managed save for transient domain"));
> +        goto cleanup;
> +    }
> 
>      name = libxlDomainManagedSavePath(driver, vm);
>      if (name == NULL)
> diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
> index ac323b6..c6c3901 100644
> --- a/src/qemu/qemu_driver.c
> +++ b/src/qemu/qemu_driver.c
> @@ -2582,6 +2582,11 @@ qemuDomainManagedSave(virDomainPtr dom, unsigned int flags)
>                          "%s", _("domain is not running"));
>          goto cleanup;
>      }
> +    if (!vm->persistent) {
> +        qemuReportError(VIR_ERR_OPERATION_INVALID, "%s",
> +                        _("cannot do managed save for transient domain"));
> +        goto cleanup;
> +    }
> 
>      name = qemuDomainManagedSavePath(driver, vm);
>      if (name == NULL)

ACK

Daniel

-- 
Daniel Veillard      | libxml Gnome XML XSLT toolkit  http://xmlsoft.org/
daniel at veillard.com  | Rpmfind RPM search engine http://rpmfind.net/
http://veillard.com/ | virtualization library  http://libvirt.org/




More information about the libvir-list mailing list