[libvirt] [PATCH 20/16] save: let qemu driver manipulate save files

Daniel P. Berrange berrange at redhat.com
Thu Jul 21 11:47:18 UTC 2011


On Wed, Jul 20, 2011 at 02:54:26PM -0600, Eric Blake wrote:
> * src/qemu/qemu_driver.c (qemuDomainSaveImageGetXMLDesc)
> (qemuDomainSaveImageDefineXML): New functions.
> (qemuDomainSaveImageOpen): Add parameter.
> (qemuDomainRestoreFlags, qemuDomainObjRestore): Adjust clients.
> (qemuDomainSaveInternal): Simplify array expansion.
> ---
> 
> Tested via:
> 
> virsh save dom dom.save
> virsh save-image-dumpxml dom.save > dom.xml
> edit dom.xml
> virsh save-image-define dom.save dom.xml
> virsh save-image-edit dom.save
> virsh restore dom.save
> 
> and the edits in dom.xml showed up in my editor, as well as
> on the restore.
> 
>  src/qemu/qemu_driver.c |  111 +++++++++++++++++++++++++++++++++++++++++++-----
>  1 files changed, 100 insertions(+), 11 deletions(-)

> +static int
> +qemuDomainSaveImageDefineXML(virConnectPtr conn, const char *path,
> +                             const char *dxml, unsigned int flags)
> +{
> +    struct qemud_driver *driver = conn->privateData;
> +    int ret = -1;
> +    virDomainDefPtr def = NULL;
> +    int fd = -1;
> +    struct qemud_save_header header;
> +    char *xml = NULL;
> +    size_t len;
> +
> +    virCheckFlags(0, -1);
> +
> +    qemuDriverLock(driver);
> +
> +    fd = qemuDomainSaveImageOpen(driver, path, &def, &header, false, NULL,
> +                                 dxml, true);
> +
> +    if (fd < 0)
> +        goto cleanup;
> +
> +    xml = qemuDomainDefFormatXML(driver, def, VIR_DOMAIN_XML_SECURE);
> +    if (!xml)
> +        goto cleanup;
> +    len = strlen(xml) + 1;
> +
> +    if (len > header.xml_len) {
> +        qemuReportError(VIR_ERR_OPERATION_FAILED, "%s",
> +                        _("new xml too large to fit in file"));
> +    }

This is what I was afraid of when I saw the API proposal. I fear that
this could make the use of the new API rather limited. I can easily
imagine 50%+ of end users wanting to the change the save image XML by
altering a disk path and getting a disk path which is longer.

I don't think we should add an API like this unless we can come up
with a plan for addressing this problem which is generally going to
work.

Daniel
-- 
|: http://berrange.com      -o-    http://www.flickr.com/photos/dberrange/ :|
|: http://libvirt.org              -o-             http://virt-manager.org :|
|: http://autobuild.org       -o-         http://search.cpan.org/~danberr/ :|
|: http://entangle-photo.org       -o-       http://live.gnome.org/gtk-vnc :|




More information about the libvir-list mailing list