Transport Open vSwitch per-port data during live
migration by using the utility functions
virNetDevOpenvswitchGetMigrateData() and
virNetDevOpenvswitchSetMigrateData().
Signed-off-by: Kyle Mestery <kmestery(a)cisco.com>
---
src/qemu/qemu_migration.c | 23 ++++++++++++++++++++---
1 file changed, 20 insertions(+), 3 deletions(-)
diff --git a/src/qemu/qemu_migration.c b/src/qemu/qemu_migration.c
index a17ccbd..b4ff3c5 100644
--- a/src/qemu/qemu_migration.c
+++ b/src/qemu/qemu_migration.c
@@ -311,7 +311,7 @@ qemuMigrationCookieNetworkAlloc(struct qemud_driver *driver
ATTRIBUTE_UNUSED,
{
qemuMigrationCookieNetworkPtr mig;
int i;
- virDomainNetDefPtr netptr ATTRIBUTE_UNUSED;
+ virDomainNetDefPtr netptr;
if (VIR_ALLOC(mig) < 0)
goto no_memory;
@@ -339,6 +339,13 @@ qemuMigrationCookieNetworkAlloc(struct qemud_driver *driver
ATTRIBUTE_UNUSED,
case VIR_NETDEV_VPORT_PROFILE_8021QBH:
break;
case VIR_NETDEV_VPORT_PROFILE_OPENVSWITCH:
+ if (virNetDevOpenvswitchGetMigrateData(&mig->net[i]->portdata,
+ netptr->ifname) != 0) {
+ virReportSystemError(VIR_ERR_INTERNAL_ERROR,
+ _("Unable to run command to get OVS
port data for "
+ "interface %s"),
netptr->ifname);
+ goto error;
+ }
break;
default:
mig->net[i]->portdata = NULL;
@@ -347,6 +354,7 @@ qemuMigrationCookieNetworkAlloc(struct qemud_driver *driver
ATTRIBUTE_UNUSED,
}
}
+error:
return mig;
no_memory:
@@ -1278,8 +1286,8 @@ qemuDomainMigrateOPDRelocate(struct qemud_driver *driver
ATTRIBUTE_UNUSED,
virDomainObjPtr vm,
qemuMigrationCookiePtr cookie)
{
- virDomainNetDefPtr netptr ATTRIBUTE_UNUSED;
- int ret = 0;
+ virDomainNetDefPtr netptr;
+ int ret = -1;
int i;
for (i = 0; i < cookie->network->nnets; i++) {
@@ -1293,12 +1301,21 @@ qemuDomainMigrateOPDRelocate(struct qemud_driver *driver
ATTRIBUTE_UNUSED,
case VIR_NETDEV_VPORT_PROFILE_8021QBH:
break;
case VIR_NETDEV_VPORT_PROFILE_OPENVSWITCH:
+ if
(virNetDevOpenvswitchSetMigrateData(cookie->network->net[i]->portdata,
+ netptr->ifname) != 0) {
+ virReportSystemError(VIR_ERR_INTERNAL_ERROR,
+ _("Unable to run command to set OVS port data
for "
+ "interface %s"), netptr->ifname);
+ goto cleanup;
+ }
break;
default:
break;
}
}
+ ret = 0;
+cleanup:
return ret;
}
--
1.7.11.4