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) -- 1.7.4.4 -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list