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@xxxxxxxxxxxx | Rpmfind RPM search engine http://rpmfind.net/ http://veillard.com/ | virtualization library http://libvirt.org/ -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list