|
|
43fe83 |
From 830af6845e0c1dd0ebe6f3de37c27ec3cd6f5e74 Mon Sep 17 00:00:00 2001
|
|
|
43fe83 |
Message-Id: <830af6845e0c1dd0ebe6f3de37c27ec3cd6f5e74.1378475168.git.jdenemar@redhat.com>
|
|
|
43fe83 |
From: Jiri Denemark <jdenemar@redhat.com>
|
|
|
43fe83 |
Date: Wed, 4 Sep 2013 09:47:02 +0200
|
|
|
43fe83 |
Subject: [PATCH] qemu: Make domain renaming work during migration
|
|
|
43fe83 |
|
|
|
43fe83 |
https://bugzilla.redhat.com/show_bug.cgi?id=999352
|
|
|
43fe83 |
|
|
|
43fe83 |
Since commit v1.0.5-56-g449e6b1 (Pull parsing of migration xml up into
|
|
|
43fe83 |
QEMU driver APIs) any attempt to rename a domain during migration fails
|
|
|
43fe83 |
with the following error message:
|
|
|
43fe83 |
|
|
|
43fe83 |
internal error Incoming cookie data had unexpected name DOM vs DOM2
|
|
|
43fe83 |
|
|
|
43fe83 |
This is because migration cookies always use the original domain name
|
|
|
43fe83 |
and the mentioned commit failed to propagate the name back to
|
|
|
43fe83 |
qemuMigrationPrepareAny.
|
|
|
43fe83 |
|
|
|
43fe83 |
(cherry picked from commit 8d67c550e931f1dbc163e7e20784218edc1165df)
|
|
|
43fe83 |
---
|
|
|
43fe83 |
src/qemu/qemu_driver.c | 36 ++++++++++++++++++++++++------------
|
|
|
43fe83 |
src/qemu/qemu_migration.c | 31 +++++++++++++++++++------------
|
|
|
43fe83 |
src/qemu/qemu_migration.h | 5 ++++-
|
|
|
43fe83 |
3 files changed, 47 insertions(+), 25 deletions(-)
|
|
|
43fe83 |
|
|
|
43fe83 |
diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
|
|
|
43fe83 |
index 99cce90..995fe76 100644
|
|
|
43fe83 |
--- a/src/qemu/qemu_driver.c
|
|
|
43fe83 |
+++ b/src/qemu/qemu_driver.c
|
|
|
43fe83 |
@@ -10202,6 +10202,7 @@ qemuDomainMigratePrepareTunnel(virConnectPtr dconn,
|
|
|
43fe83 |
{
|
|
|
43fe83 |
virQEMUDriverPtr driver = dconn->privateData;
|
|
|
43fe83 |
virDomainDefPtr def = NULL;
|
|
|
43fe83 |
+ char *origname = NULL;
|
|
|
43fe83 |
int ret = -1;
|
|
|
43fe83 |
|
|
|
43fe83 |
virCheckFlags(QEMU_MIGRATION_FLAGS, -1);
|
|
|
43fe83 |
@@ -10219,7 +10220,7 @@ qemuDomainMigratePrepareTunnel(virConnectPtr dconn,
|
|
|
43fe83 |
goto cleanup;
|
|
|
43fe83 |
}
|
|
|
43fe83 |
|
|
|
43fe83 |
- if (!(def = qemuMigrationPrepareDef(driver, dom_xml, dname)))
|
|
|
43fe83 |
+ if (!(def = qemuMigrationPrepareDef(driver, dom_xml, dname, &origname)))
|
|
|
43fe83 |
goto cleanup;
|
|
|
43fe83 |
|
|
|
43fe83 |
if (virDomainMigratePrepareTunnelEnsureACL(dconn, def) < 0)
|
|
|
43fe83 |
@@ -10227,9 +10228,10 @@ qemuDomainMigratePrepareTunnel(virConnectPtr dconn,
|
|
|
43fe83 |
|
|
|
43fe83 |
ret = qemuMigrationPrepareTunnel(driver, dconn,
|
|
|
43fe83 |
NULL, 0, NULL, NULL, /* No cookies in v2 */
|
|
|
43fe83 |
- st, &def, flags);
|
|
|
43fe83 |
+ st, &def, origname, flags);
|
|
|
43fe83 |
|
|
|
43fe83 |
cleanup:
|
|
|
43fe83 |
+ VIR_FREE(origname);
|
|
|
43fe83 |
virDomainDefFree(def);
|
|
|
43fe83 |
return ret;
|
|
|
43fe83 |
}
|
|
|
43fe83 |
@@ -10251,6 +10253,7 @@ qemuDomainMigratePrepare2(virConnectPtr dconn,
|
|
|
43fe83 |
{
|
|
|
43fe83 |
virQEMUDriverPtr driver = dconn->privateData;
|
|
|
43fe83 |
virDomainDefPtr def = NULL;
|
|
|
43fe83 |
+ char *origname = NULL;
|
|
|
43fe83 |
int ret = -1;
|
|
|
43fe83 |
|
|
|
43fe83 |
virCheckFlags(QEMU_MIGRATION_FLAGS, -1);
|
|
|
43fe83 |
@@ -10272,7 +10275,7 @@ qemuDomainMigratePrepare2(virConnectPtr dconn,
|
|
|
43fe83 |
goto cleanup;
|
|
|
43fe83 |
}
|
|
|
43fe83 |
|
|
|
43fe83 |
- if (!(def = qemuMigrationPrepareDef(driver, dom_xml, dname)))
|
|
|
43fe83 |
+ if (!(def = qemuMigrationPrepareDef(driver, dom_xml, dname, &origname)))
|
|
|
43fe83 |
goto cleanup;
|
|
|
43fe83 |
|
|
|
43fe83 |
if (virDomainMigratePrepare2EnsureACL(dconn, def) < 0)
|
|
|
43fe83 |
@@ -10285,9 +10288,10 @@ qemuDomainMigratePrepare2(virConnectPtr dconn,
|
|
|
43fe83 |
ret = qemuMigrationPrepareDirect(driver, dconn,
|
|
|
43fe83 |
NULL, 0, NULL, NULL, /* No cookies */
|
|
|
43fe83 |
uri_in, uri_out,
|
|
|
43fe83 |
- &def, flags);
|
|
|
43fe83 |
+ &def, origname, flags);
|
|
|
43fe83 |
|
|
|
43fe83 |
cleanup:
|
|
|
43fe83 |
+ VIR_FREE(origname);
|
|
|
43fe83 |
virDomainDefFree(def);
|
|
|
43fe83 |
return ret;
|
|
|
43fe83 |
}
|
|
|
43fe83 |
@@ -10464,6 +10468,7 @@ qemuDomainMigratePrepare3(virConnectPtr dconn,
|
|
|
43fe83 |
{
|
|
|
43fe83 |
virQEMUDriverPtr driver = dconn->privateData;
|
|
|
43fe83 |
virDomainDefPtr def = NULL;
|
|
|
43fe83 |
+ char *origname = NULL;
|
|
|
43fe83 |
int ret = -1;
|
|
|
43fe83 |
|
|
|
43fe83 |
virCheckFlags(QEMU_MIGRATION_FLAGS, -1);
|
|
|
43fe83 |
@@ -10478,7 +10483,7 @@ qemuDomainMigratePrepare3(virConnectPtr dconn,
|
|
|
43fe83 |
goto cleanup;
|
|
|
43fe83 |
}
|
|
|
43fe83 |
|
|
|
43fe83 |
- if (!(def = qemuMigrationPrepareDef(driver, dom_xml, dname)))
|
|
|
43fe83 |
+ if (!(def = qemuMigrationPrepareDef(driver, dom_xml, dname, &origname)))
|
|
|
43fe83 |
goto cleanup;
|
|
|
43fe83 |
|
|
|
43fe83 |
if (virDomainMigratePrepare3EnsureACL(dconn, def) < 0)
|
|
|
43fe83 |
@@ -10488,9 +10493,10 @@ qemuDomainMigratePrepare3(virConnectPtr dconn,
|
|
|
43fe83 |
cookiein, cookieinlen,
|
|
|
43fe83 |
cookieout, cookieoutlen,
|
|
|
43fe83 |
uri_in, uri_out,
|
|
|
43fe83 |
- &def, flags);
|
|
|
43fe83 |
+ &def, origname, flags);
|
|
|
43fe83 |
|
|
|
43fe83 |
cleanup:
|
|
|
43fe83 |
+ VIR_FREE(origname);
|
|
|
43fe83 |
virDomainDefFree(def);
|
|
|
43fe83 |
return ret;
|
|
|
43fe83 |
}
|
|
|
43fe83 |
@@ -10511,6 +10517,7 @@ qemuDomainMigratePrepare3Params(virConnectPtr dconn,
|
|
|
43fe83 |
const char *dom_xml = NULL;
|
|
|
43fe83 |
const char *dname = NULL;
|
|
|
43fe83 |
const char *uri_in = NULL;
|
|
|
43fe83 |
+ char *origname = NULL;
|
|
|
43fe83 |
int ret = -1;
|
|
|
43fe83 |
|
|
|
43fe83 |
virCheckFlags(QEMU_MIGRATION_FLAGS, -1);
|
|
|
43fe83 |
@@ -10538,7 +10545,7 @@ qemuDomainMigratePrepare3Params(virConnectPtr dconn,
|
|
|
43fe83 |
goto cleanup;
|
|
|
43fe83 |
}
|
|
|
43fe83 |
|
|
|
43fe83 |
- if (!(def = qemuMigrationPrepareDef(driver, dom_xml, dname)))
|
|
|
43fe83 |
+ if (!(def = qemuMigrationPrepareDef(driver, dom_xml, dname, &origname)))
|
|
|
43fe83 |
goto cleanup;
|
|
|
43fe83 |
|
|
|
43fe83 |
if (virDomainMigratePrepare3ParamsEnsureACL(dconn, def) < 0)
|
|
|
43fe83 |
@@ -10548,9 +10555,10 @@ qemuDomainMigratePrepare3Params(virConnectPtr dconn,
|
|
|
43fe83 |
cookiein, cookieinlen,
|
|
|
43fe83 |
cookieout, cookieoutlen,
|
|
|
43fe83 |
uri_in, uri_out,
|
|
|
43fe83 |
- &def, flags);
|
|
|
43fe83 |
+ &def, origname, flags);
|
|
|
43fe83 |
|
|
|
43fe83 |
cleanup:
|
|
|
43fe83 |
+ VIR_FREE(origname);
|
|
|
43fe83 |
virDomainDefFree(def);
|
|
|
43fe83 |
return ret;
|
|
|
43fe83 |
}
|
|
|
43fe83 |
@@ -10570,6 +10578,7 @@ qemuDomainMigratePrepareTunnel3(virConnectPtr dconn,
|
|
|
43fe83 |
{
|
|
|
43fe83 |
virQEMUDriverPtr driver = dconn->privateData;
|
|
|
43fe83 |
virDomainDefPtr def = NULL;
|
|
|
43fe83 |
+ char *origname = NULL;
|
|
|
43fe83 |
int ret = -1;
|
|
|
43fe83 |
|
|
|
43fe83 |
virCheckFlags(QEMU_MIGRATION_FLAGS, -1);
|
|
|
43fe83 |
@@ -10580,7 +10589,7 @@ qemuDomainMigratePrepareTunnel3(virConnectPtr dconn,
|
|
|
43fe83 |
goto cleanup;
|
|
|
43fe83 |
}
|
|
|
43fe83 |
|
|
|
43fe83 |
- if (!(def = qemuMigrationPrepareDef(driver, dom_xml, dname)))
|
|
|
43fe83 |
+ if (!(def = qemuMigrationPrepareDef(driver, dom_xml, dname, &origname)))
|
|
|
43fe83 |
goto cleanup;
|
|
|
43fe83 |
|
|
|
43fe83 |
if (virDomainMigratePrepareTunnel3EnsureACL(dconn, def) < 0)
|
|
|
43fe83 |
@@ -10589,9 +10598,10 @@ qemuDomainMigratePrepareTunnel3(virConnectPtr dconn,
|
|
|
43fe83 |
ret = qemuMigrationPrepareTunnel(driver, dconn,
|
|
|
43fe83 |
cookiein, cookieinlen,
|
|
|
43fe83 |
cookieout, cookieoutlen,
|
|
|
43fe83 |
- st, &def, flags);
|
|
|
43fe83 |
+ st, &def, origname, flags);
|
|
|
43fe83 |
|
|
|
43fe83 |
cleanup:
|
|
|
43fe83 |
+ VIR_FREE(origname);
|
|
|
43fe83 |
virDomainDefFree(def);
|
|
|
43fe83 |
return ret;
|
|
|
43fe83 |
}
|
|
|
43fe83 |
@@ -10611,6 +10621,7 @@ qemuDomainMigratePrepareTunnel3Params(virConnectPtr dconn,
|
|
|
43fe83 |
virDomainDefPtr def = NULL;
|
|
|
43fe83 |
const char *dom_xml = NULL;
|
|
|
43fe83 |
const char *dname = NULL;
|
|
|
43fe83 |
+ char *origname = NULL;
|
|
|
43fe83 |
int ret = -1;
|
|
|
43fe83 |
|
|
|
43fe83 |
virCheckFlags(QEMU_MIGRATION_FLAGS, -1);
|
|
|
43fe83 |
@@ -10631,7 +10642,7 @@ qemuDomainMigratePrepareTunnel3Params(virConnectPtr dconn,
|
|
|
43fe83 |
goto cleanup;
|
|
|
43fe83 |
}
|
|
|
43fe83 |
|
|
|
43fe83 |
- if (!(def = qemuMigrationPrepareDef(driver, dom_xml, dname)))
|
|
|
43fe83 |
+ if (!(def = qemuMigrationPrepareDef(driver, dom_xml, dname, &origname)))
|
|
|
43fe83 |
goto cleanup;
|
|
|
43fe83 |
|
|
|
43fe83 |
if (virDomainMigratePrepareTunnel3ParamsEnsureACL(dconn, def) < 0)
|
|
|
43fe83 |
@@ -10640,9 +10651,10 @@ qemuDomainMigratePrepareTunnel3Params(virConnectPtr dconn,
|
|
|
43fe83 |
ret = qemuMigrationPrepareTunnel(driver, dconn,
|
|
|
43fe83 |
cookiein, cookieinlen,
|
|
|
43fe83 |
cookieout, cookieoutlen,
|
|
|
43fe83 |
- st, &def, flags);
|
|
|
43fe83 |
+ st, &def, origname, flags);
|
|
|
43fe83 |
|
|
|
43fe83 |
cleanup:
|
|
|
43fe83 |
+ VIR_FREE(origname);
|
|
|
43fe83 |
virDomainDefFree(def);
|
|
|
43fe83 |
return ret;
|
|
|
43fe83 |
}
|
|
|
43fe83 |
diff --git a/src/qemu/qemu_migration.c b/src/qemu/qemu_migration.c
|
|
|
43fe83 |
index 3dedfe8..5fd52c1 100644
|
|
|
43fe83 |
--- a/src/qemu/qemu_migration.c
|
|
|
43fe83 |
+++ b/src/qemu/qemu_migration.c
|
|
|
43fe83 |
@@ -2161,6 +2161,7 @@ qemuMigrationPrepareAny(virQEMUDriverPtr driver,
|
|
|
43fe83 |
char **cookieout,
|
|
|
43fe83 |
int *cookieoutlen,
|
|
|
43fe83 |
virDomainDefPtr *def,
|
|
|
43fe83 |
+ const char *origname,
|
|
|
43fe83 |
virStreamPtr st,
|
|
|
43fe83 |
unsigned int port,
|
|
|
43fe83 |
unsigned long flags)
|
|
|
43fe83 |
@@ -2173,7 +2174,6 @@ qemuMigrationPrepareAny(virQEMUDriverPtr driver,
|
|
|
43fe83 |
unsigned long long now;
|
|
|
43fe83 |
qemuMigrationCookiePtr mig = NULL;
|
|
|
43fe83 |
bool tunnel = !!st;
|
|
|
43fe83 |
- char *origname = NULL;
|
|
|
43fe83 |
char *xmlout = NULL;
|
|
|
43fe83 |
unsigned int cookieFlags;
|
|
|
43fe83 |
virCapsPtr caps = NULL;
|
|
|
43fe83 |
@@ -2298,8 +2298,8 @@ qemuMigrationPrepareAny(virQEMUDriverPtr driver,
|
|
|
43fe83 |
|
|
|
43fe83 |
*def = NULL;
|
|
|
43fe83 |
priv = vm->privateData;
|
|
|
43fe83 |
- priv->origname = origname;
|
|
|
43fe83 |
- origname = NULL;
|
|
|
43fe83 |
+ if (VIR_STRDUP(priv->origname, origname) < 0)
|
|
|
43fe83 |
+ goto cleanup;
|
|
|
43fe83 |
|
|
|
43fe83 |
if (!(mig = qemuMigrationEatCookie(driver, vm, cookiein, cookieinlen,
|
|
|
43fe83 |
QEMU_MIGRATION_COOKIE_LOCKSTATE |
|
|
|
43fe83 |
@@ -2413,7 +2413,6 @@ done:
|
|
|
43fe83 |
|
|
|
43fe83 |
cleanup:
|
|
|
43fe83 |
VIR_FREE(migrateFrom);
|
|
|
43fe83 |
- VIR_FREE(origname);
|
|
|
43fe83 |
VIR_FREE(xmlout);
|
|
|
43fe83 |
VIR_FORCE_CLOSE(dataFD[0]);
|
|
|
43fe83 |
VIR_FORCE_CLOSE(dataFD[1]);
|
|
|
43fe83 |
@@ -2458,15 +2457,16 @@ qemuMigrationPrepareTunnel(virQEMUDriverPtr driver,
|
|
|
43fe83 |
int *cookieoutlen,
|
|
|
43fe83 |
virStreamPtr st,
|
|
|
43fe83 |
virDomainDefPtr *def,
|
|
|
43fe83 |
+ const char *origname,
|
|
|
43fe83 |
unsigned long flags)
|
|
|
43fe83 |
{
|
|
|
43fe83 |
int ret;
|
|
|
43fe83 |
|
|
|
43fe83 |
VIR_DEBUG("driver=%p, dconn=%p, cookiein=%s, cookieinlen=%d, "
|
|
|
43fe83 |
"cookieout=%p, cookieoutlen=%p, st=%p, def=%p, "
|
|
|
43fe83 |
- "flags=%lx",
|
|
|
43fe83 |
+ "origname=%s, flags=%lx",
|
|
|
43fe83 |
driver, dconn, NULLSTR(cookiein), cookieinlen,
|
|
|
43fe83 |
- cookieout, cookieoutlen, st, *def, flags);
|
|
|
43fe83 |
+ cookieout, cookieoutlen, st, *def, origname, flags);
|
|
|
43fe83 |
|
|
|
43fe83 |
if (st == NULL) {
|
|
|
43fe83 |
virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
|
|
|
43fe83 |
@@ -2475,7 +2475,7 @@ qemuMigrationPrepareTunnel(virQEMUDriverPtr driver,
|
|
|
43fe83 |
}
|
|
|
43fe83 |
|
|
|
43fe83 |
ret = qemuMigrationPrepareAny(driver, dconn, cookiein, cookieinlen,
|
|
|
43fe83 |
- cookieout, cookieoutlen, def,
|
|
|
43fe83 |
+ cookieout, cookieoutlen, def, origname,
|
|
|
43fe83 |
st, 0, flags);
|
|
|
43fe83 |
return ret;
|
|
|
43fe83 |
}
|
|
|
43fe83 |
@@ -2491,6 +2491,7 @@ qemuMigrationPrepareDirect(virQEMUDriverPtr driver,
|
|
|
43fe83 |
const char *uri_in,
|
|
|
43fe83 |
char **uri_out,
|
|
|
43fe83 |
virDomainDefPtr *def,
|
|
|
43fe83 |
+ const char *origname,
|
|
|
43fe83 |
unsigned long flags)
|
|
|
43fe83 |
{
|
|
|
43fe83 |
static int port = 0;
|
|
|
43fe83 |
@@ -2503,10 +2504,10 @@ qemuMigrationPrepareDirect(virQEMUDriverPtr driver,
|
|
|
43fe83 |
|
|
|
43fe83 |
VIR_DEBUG("driver=%p, dconn=%p, cookiein=%s, cookieinlen=%d, "
|
|
|
43fe83 |
"cookieout=%p, cookieoutlen=%p, uri_in=%s, uri_out=%p, "
|
|
|
43fe83 |
- "def=%p, flags=%lx",
|
|
|
43fe83 |
+ "def=%p, origname=%s, flags=%lx",
|
|
|
43fe83 |
driver, dconn, NULLSTR(cookiein), cookieinlen,
|
|
|
43fe83 |
cookieout, cookieoutlen, NULLSTR(uri_in), uri_out,
|
|
|
43fe83 |
- *def, flags);
|
|
|
43fe83 |
+ *def, origname, flags);
|
|
|
43fe83 |
|
|
|
43fe83 |
*uri_out = NULL;
|
|
|
43fe83 |
|
|
|
43fe83 |
@@ -2595,7 +2596,7 @@ qemuMigrationPrepareDirect(virQEMUDriverPtr driver,
|
|
|
43fe83 |
VIR_DEBUG("Generated uri_out=%s", *uri_out);
|
|
|
43fe83 |
|
|
|
43fe83 |
ret = qemuMigrationPrepareAny(driver, dconn, cookiein, cookieinlen,
|
|
|
43fe83 |
- cookieout, cookieoutlen, def,
|
|
|
43fe83 |
+ cookieout, cookieoutlen, def, origname,
|
|
|
43fe83 |
NULL, this_port, flags);
|
|
|
43fe83 |
cleanup:
|
|
|
43fe83 |
virURIFree(uri);
|
|
|
43fe83 |
@@ -2609,10 +2610,12 @@ cleanup:
|
|
|
43fe83 |
virDomainDefPtr
|
|
|
43fe83 |
qemuMigrationPrepareDef(virQEMUDriverPtr driver,
|
|
|
43fe83 |
const char *dom_xml,
|
|
|
43fe83 |
- const char *dname)
|
|
|
43fe83 |
+ const char *dname,
|
|
|
43fe83 |
+ char **origname)
|
|
|
43fe83 |
{
|
|
|
43fe83 |
virCapsPtr caps = NULL;
|
|
|
43fe83 |
virDomainDefPtr def;
|
|
|
43fe83 |
+ char *name = NULL;
|
|
|
43fe83 |
|
|
|
43fe83 |
if (!dom_xml) {
|
|
|
43fe83 |
virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
|
|
|
43fe83 |
@@ -2629,7 +2632,7 @@ qemuMigrationPrepareDef(virQEMUDriverPtr driver,
|
|
|
43fe83 |
goto cleanup;
|
|
|
43fe83 |
|
|
|
43fe83 |
if (dname) {
|
|
|
43fe83 |
- VIR_FREE(def->name);
|
|
|
43fe83 |
+ name = def->name;
|
|
|
43fe83 |
if (VIR_STRDUP(def->name, dname) < 0) {
|
|
|
43fe83 |
virDomainDefFree(def);
|
|
|
43fe83 |
def = NULL;
|
|
|
43fe83 |
@@ -2638,6 +2641,10 @@ qemuMigrationPrepareDef(virQEMUDriverPtr driver,
|
|
|
43fe83 |
|
|
|
43fe83 |
cleanup:
|
|
|
43fe83 |
virObjectUnref(caps);
|
|
|
43fe83 |
+ if (def && origname)
|
|
|
43fe83 |
+ *origname = name;
|
|
|
43fe83 |
+ else
|
|
|
43fe83 |
+ VIR_FREE(name);
|
|
|
43fe83 |
return def;
|
|
|
43fe83 |
}
|
|
|
43fe83 |
|
|
|
43fe83 |
diff --git a/src/qemu/qemu_migration.h b/src/qemu/qemu_migration.h
|
|
|
43fe83 |
index 0f6c5f7..4af5aed 100644
|
|
|
43fe83 |
--- a/src/qemu/qemu_migration.h
|
|
|
43fe83 |
+++ b/src/qemu/qemu_migration.h
|
|
|
43fe83 |
@@ -100,7 +100,8 @@ char *qemuMigrationBegin(virConnectPtr conn,
|
|
|
43fe83 |
|
|
|
43fe83 |
virDomainDefPtr qemuMigrationPrepareDef(virQEMUDriverPtr driver,
|
|
|
43fe83 |
const char *dom_xml,
|
|
|
43fe83 |
- const char *dname);
|
|
|
43fe83 |
+ const char *dname,
|
|
|
43fe83 |
+ char **origname);
|
|
|
43fe83 |
|
|
|
43fe83 |
int qemuMigrationPrepareTunnel(virQEMUDriverPtr driver,
|
|
|
43fe83 |
virConnectPtr dconn,
|
|
|
43fe83 |
@@ -110,6 +111,7 @@ int qemuMigrationPrepareTunnel(virQEMUDriverPtr driver,
|
|
|
43fe83 |
int *cookieoutlen,
|
|
|
43fe83 |
virStreamPtr st,
|
|
|
43fe83 |
virDomainDefPtr *def,
|
|
|
43fe83 |
+ const char *origname,
|
|
|
43fe83 |
unsigned long flags);
|
|
|
43fe83 |
|
|
|
43fe83 |
int qemuMigrationPrepareDirect(virQEMUDriverPtr driver,
|
|
|
43fe83 |
@@ -121,6 +123,7 @@ int qemuMigrationPrepareDirect(virQEMUDriverPtr driver,
|
|
|
43fe83 |
const char *uri_in,
|
|
|
43fe83 |
char **uri_out,
|
|
|
43fe83 |
virDomainDefPtr *def,
|
|
|
43fe83 |
+ const char *origname,
|
|
|
43fe83 |
unsigned long flags);
|
|
|
43fe83 |
|
|
|
43fe83 |
int qemuMigrationPerform(virQEMUDriverPtr driver,
|
|
|
43fe83 |
--
|
|
|
43fe83 |
1.8.3.2
|
|
|
43fe83 |
|