Don't generate cookies with v2 migration protocol.

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
This commit is contained in:
Daniel P. Berrange 2011-05-18 12:34:08 -04:00
parent 03f8832684
commit 6b937b2430

View File

@ -5867,8 +5867,8 @@ cleanup:
*/ */
static int ATTRIBUTE_NONNULL (5) static int ATTRIBUTE_NONNULL (5)
qemudDomainMigratePrepare2 (virConnectPtr dconn, qemudDomainMigratePrepare2 (virConnectPtr dconn,
char **cookie, char **cookie ATTRIBUTE_UNUSED,
int *cookielen, int *cookielen ATTRIBUTE_UNUSED,
const char *uri_in, const char *uri_in,
char **uri_out, char **uri_out,
unsigned long flags, unsigned long flags,
@ -5906,9 +5906,12 @@ qemudDomainMigratePrepare2 (virConnectPtr dconn,
goto cleanup; 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, ret = qemuMigrationPrepareDirect(driver, dconn,
NULL, 0, /* No input cookies in v2 */ NULL, 0, NULL, NULL, /* No cookies */
cookie, cookielen,
uri_in, uri_out, uri_in, uri_out,
dname, dom_xml); dname, dom_xml);
@ -5921,8 +5924,8 @@ cleanup:
/* Perform is the second step, and it runs on the source host. */ /* Perform is the second step, and it runs on the source host. */
static int static int
qemudDomainMigratePerform (virDomainPtr dom, qemudDomainMigratePerform (virDomainPtr dom,
const char *cookie ATTRIBUTE_UNUSED, const char *cookie,
int cookielen ATTRIBUTE_UNUSED, int cookielen,
const char *uri, const char *uri,
unsigned long flags, unsigned long flags,
const char *dname, const char *dname,
@ -5951,6 +5954,12 @@ qemudDomainMigratePerform (virDomainPtr dom,
goto cleanup; 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, ret = qemuMigrationPerform(driver, dom->conn, vm,
uri, cookie, cookielen, uri, cookie, cookielen,
NULL, NULL, /* No output cookies in v2 */ NULL, NULL, /* No output cookies in v2 */
@ -5997,8 +6006,12 @@ qemudDomainMigrateFinish2 (virConnectPtr dconn,
goto cleanup; 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, dom = qemuMigrationFinish(driver, dconn, vm,
NULL, 0, NULL, NULL, /* No cookies in v2 */ NULL, 0, NULL, NULL, /* No cookies */
flags, retcode); flags, retcode);
cleanup: cleanup: