The v2 migration protocol had a limit on cookie length that was too small to be useful for QEMU. Avoid generating cookies with v2 protocol, so that old libvirtd can still reliably migrate a guest to new libvirtd uses v2 protocol.
* src/qemu/qemu_driver.c: Avoid migration cookies with v2 migration --- src/qemu/qemu_driver.c | 27 ++++++++++++++++++++------- 1 files changed, 20 insertions(+), 7 deletions(-) diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index 2f9c8e7..44acc6a 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -5867,8 +5867,8 @@ cleanup: */ static int ATTRIBUTE_NONNULL (5) qemudDomainMigratePrepare2 (virConnectPtr dconn, - char **cookie, - int *cookielen, + char **cookie ATTRIBUTE_UNUSED, + int *cookielen ATTRIBUTE_UNUSED, const char *uri_in, char **uri_out, unsigned long flags, @@ -5906,9 +5906,12 @@ qemudDomainMigratePrepare2 (virConnectPtr dconn, goto cleanup; } + /* Do not use cookies in v2 protocol, since the cookie + * length was not sufficiently large, causing failures + * migrating between old & new libvirtd + */ ret = qemuMigrationPrepareDirect(driver, dconn, - NULL, 0, /* No input cookies in v2 */ - cookie, cookielen, + NULL, 0, NULL, NULL, /* No cookies */ uri_in, uri_out, dname, dom_xml); @@ -5921,8 +5924,8 @@ cleanup: /* Perform is the second step, and it runs on the source host. */ static int qemudDomainMigratePerform (virDomainPtr dom, - const char *cookie ATTRIBUTE_UNUSED, - int cookielen ATTRIBUTE_UNUSED, + const char *cookie, + int cookielen, const char *uri, unsigned long flags, const char *dname, @@ -5951,6 +5954,12 @@ qemudDomainMigratePerform (virDomainPtr dom, goto cleanup; } + /* Do not output cookies in v2 protocol, since the cookie + * length was not sufficiently large, causing failures + * migrating between old & new libvirtd. + * + * Consume any cookie we were able to decode though + */ ret = qemuMigrationPerform(driver, dom->conn, vm, uri, cookie, cookielen, NULL, NULL, /* No output cookies in v2 */ @@ -5997,8 +6006,12 @@ qemudDomainMigrateFinish2 (virConnectPtr dconn, goto cleanup; } + /* Do not use cookies in v2 protocol, since the cookie + * length was not sufficiently large, causing failures + * migrating between old & new libvirtd + */ dom = qemuMigrationFinish(driver, dconn, vm, - NULL, 0, NULL, NULL, /* No cookies in v2 */ + NULL, 0, NULL, NULL, /* No cookies */ flags, retcode); cleanup: -- 1.7.4.4 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list