[libvirt] [PATCH 03/16] Introduce migration cookies to QEMU driver

Eric Blake eblake at redhat.com
Wed May 11 23:24:46 UTC 2011


On 05/11/2011 03:09 AM, Daniel P. Berrange wrote:
> The migration protocol has support for a 'cookie' parameter which
> is an opaque array of bytes as far as libvirt is concerned. Drivers
> may use this for passing around arbitrary extra data they might
> need during migration. The QEMU driver needs todo a few things:

s/todo/to do/

> 
>  - Pass hostname/uuid to allow strict protection against localhost
>    migration attempts
>  - Pass SPICE/VNC server port from the target back to the source to
>    allow seemless relocation of client sessions

s/seemless/seamless/

>  - Pass lock driver state from source to destination
> 
> This patch introduces the basic glue for handling cookies
> but only includes the host/guest UUID & name.
> 
> * src/libvirt_private.syms: Export virXMLParseStrHelper
> * src/qemu/qemu_migration.c, src/qemu/qemu_migration.h: Parsing
>   and formatting of migration cookies
> * src/qemu/qemu_driver.c: Pass in cookie parameters where possible
> * src/remote/remote_protocol.h, src/remote/remote_protocol.x: Change
>   cookie max length to 16384 bytes
> ---
>  cfg.mk                       |    1 +
>  src/libvirt_private.syms     |    1 +
>  src/qemu/qemu_driver.c       |   20 ++-
>  src/qemu/qemu_migration.c    |  351 +++++++++++++++++++++++++++++++++++++++++-
>  src/qemu/qemu_migration.h    |   16 ++
>  src/remote/remote_protocol.x |    2 +-
>  6 files changed, 377 insertions(+), 14 deletions(-)
> 

> @@ -342,6 +612,15 @@ qemuMigrationPrepareTunnel(struct qemud_driver *driver,
>      event = virDomainEventNewFromObj(vm,
>                                       VIR_DOMAIN_EVENT_STARTED,
>                                       VIR_DOMAIN_EVENT_STARTED_MIGRATED);
> +
> +    if (qemuMigrationBakeCookie(mig, driver, vm, cookieout, cookieoutlen, 0) < 0) {
> +        /* We could tear down the whole guest here, but
> +         * cookie data is (so far) non-critical, so that
> +         * seems a little harsh. We'll just warn for now..

Double .

> +         */
> +        VIR_WARN0("Unable to encode migration cookie");

and more rebase fun.

ACK with this squashed in:

diff --git i/src/qemu/qemu_migration.c w/src/qemu/qemu_migration.c
index 79a8204..0ffdadd 100644
--- i/src/qemu/qemu_migration.c
+++ w/src/qemu/qemu_migration.c
@@ -145,7 +145,7 @@ qemuMigrationCookieXMLParse(qemuMigrationCookiePtr mig,
     char *tmp;

     /* We don't store the uuid, name, hostname, or hostuuid
-     * values. We just compare them to local data todo some
+     * values. We just compare them to local data to do some
      * sanity checking on migration operation
      */

@@ -616,9 +616,9 @@ qemuMigrationPrepareTunnel(struct qemud_driver *driver,
     if (qemuMigrationBakeCookie(mig, driver, vm, cookieout,
cookieoutlen, 0) < 0) {
         /* We could tear down the whole guest here, but
          * cookie data is (so far) non-critical, so that
-         * seems a little harsh. We'll just warn for now..
+         * seems a little harsh. We'll just warn for now.
          */
-        VIR_WARN0("Unable to encode migration cookie");
+        VIR_WARN("Unable to encode migration cookie");
     }

     ret = 0;
@@ -818,9 +818,9 @@ qemuMigrationPrepareDirect(struct qemud_driver *driver,
     if (qemuMigrationBakeCookie(mig, driver, vm, cookieout,
cookieoutlen, 0) < 0) {
         /* We could tear down the whole guest here, but
          * cookie data is (so far) non-critical, so that
-         * seems a little harsh. We'll just warn for now..
+         * seems a little harsh. We'll just warn for now.
          */
-        VIR_WARN0("Unable to encode migration cookie");
+        VIR_WARN("Unable to encode migration cookie");
     }

     qemuAuditDomainStart(vm, "migrated", true);
@@ -926,7 +926,7 @@ static int doNativeMigrate(struct qemud_driver *driver,
         goto cleanup;

     if (qemuMigrationBakeCookie(mig, driver, vm, cookieout,
cookieoutlen, 0) < 0)
-        VIR_WARN0("Unable to encode migration cookie");
+        VIR_WARN("Unable to encode migration cookie");

     ret = 0;

@@ -1590,7 +1590,7 @@ qemuMigrationFinish(struct qemud_driver *driver,
     }

     if (qemuMigrationBakeCookie(mig, driver, vm, cookieout,
cookieoutlen, 0) < 0)
-        VIR_WARN0("Unable to encode migration cookie");
+        VIR_WARN("Unable to encode migration cookie");

 endjob:
     if (vm &&

-- 
Eric Blake   eblake at redhat.com    +1-801-349-2682
Libvirt virtualization library http://libvirt.org

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 619 bytes
Desc: OpenPGP digital signature
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20110511/9fc5c3df/attachment-0001.sig>


More information about the libvir-list mailing list