[Libvir] Re: [PATCH 6/7] Add KVM save support using migration.

Daniel Veillard veillard at redhat.com
Mon Aug 13 14:40:57 UTC 2007


On Sun, Aug 12, 2007 at 07:11:38PM -0400, Jim Paris wrote:
> The save file format consists of a header, XML for the domain,
> and the raw QEMU/KVM migration data stream.
> -static int qemudDomainSave(virDomainPtr dom,
> -                    const char *path ATTRIBUTE_UNUSED) {
> +#define QEMUD_SAVE_MAGIC "LibvirtQemudSave"
> +struct qemud_save_header {
> +    char magic[sizeof(QEMUD_SAVE_MAGIC)-1];


  I suggest to add an "int version" field here to be able to extend the
format.
> +    int xml_len;
> +    int was_running;

  and "int unused[16];"

With those 2 we should be able to cope with backward compatibility on
saved domain even if we don't know yet what may be needed. At worse it's
a few bytes lost in a very big file, at best it's a life saver.

> +    memset(&header, 0, sizeof(header));
> +    memcpy(header.magic, QEMUD_SAVE_MAGIC, sizeof(header.magic));

#define QEMU_SAVE_VERSION 1 somewhere and then 

       header.version = QEMU_SAVE_VERSION;

> +    header.xml_len = strlen(xml);

       maybe + 1 to account for the trailing 0

> +    if (write(fd, &header, sizeof(header)) != sizeof(header)) {
> +        qemudReportError(dom->conn, dom, NULL, VIR_ERR_OPERATION_FAILED,
> +                         "failed to write save header");
> +        close(fd);
> +        free(xml);
> +        return -1;
> +    }

  I suggest to define or reuse existing safe write and read routines which
handle interruped calls with EAGAIN.

Daniel

-- 
Red Hat Virtualization group http://redhat.com/virtualization/
Daniel Veillard      | virtualization library  http://libvirt.org/
veillard at redhat.com  | libxml GNOME XML XSLT toolkit  http://xmlsoft.org/
http://veillard.com/ | Rpmfind RPM search engine  http://rpmfind.net/




More information about the libvir-list mailing list