[libvirt] [PATCH 3/3] qemu_migration: Transport Open vSwitch per-port data during live migration
Laine Stump
laine at laine.org
Fri Sep 28 16:23:10 UTC 2012
On 09/21/2012 05:16 PM, Kyle Mestery wrote:
> Transport Open vSwitch per-port data during live
> migration by using the utility functions
> virNetDevOpenvswitchGetMigrateData() and
> virNetDevOpenvswitchSetMigrateData().
I like how the first part is all re-usable infrastructure, and the final
patch that actually makes things work is so small! That implies that it
will be easy to add other new functionality in the future...
>
> Signed-off-by: Kyle Mestery <kmestery at cisco.com>
> ---
> src/qemu/qemu_migration.c | 23 +++++++++++++++++++----
> 1 file changed, 19 insertions(+), 4 deletions(-)
>
> diff --git a/src/qemu/qemu_migration.c b/src/qemu/qemu_migration.c
> index 06981db..33cdb20 100644
> --- a/src/qemu/qemu_migration.c
> +++ b/src/qemu/qemu_migration.c
> @@ -322,7 +322,7 @@ qemuMigrationCookieNetworkAlloc(struct qemud_driver *driver ATTRIBUTE_UNUSED,
> {
> qemuMigrationCookieNetworkPtr mig;
> int i;
> - virDomainNetDefPtr netptr ATTRIBUTE_UNUSED;
> + virDomainNetDefPtr netptr;
> const char *interfacetype;
>
> if (VIR_ALLOC(mig) < 0)
> @@ -357,7 +357,13 @@ qemuMigrationCookieNetworkAlloc(struct qemud_driver *driver ATTRIBUTE_UNUSED,
> mig->net[i]->portdata = NULL;
> break;
> case VIR_NETDEV_VPORT_PROFILE_OPENVSWITCH:
> - mig->net[i]->portdata = NULL;
> + 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;
> @@ -366,6 +372,7 @@ qemuMigrationCookieNetworkAlloc(struct qemud_driver *driver ATTRIBUTE_UNUSED,
> }
> }
>
> +error:
> return mig;
>
> no_memory:
> @@ -1284,7 +1291,7 @@ qemuDomainMigrateOPDRelocate(struct qemud_driver *driver ATTRIBUTE_UNUSED,
> virDomainObjPtr vm,
> qemuMigrationCookiePtr cookie)
> {
> - virDomainNetDefPtr netptr ATTRIBUTE_UNUSED;
> + virDomainNetDefPtr netptr;
> int ret = 0;
These days we tend to 1) initialize "ret = -1" (assume failure), call
the early exit label "cleanup" rather than "error" (if a successful exit
will run through that label - it avoids confusion when someone reads the
code later), and put a "ret = 0;" on the line just before "cleanup:".
That way, you don't need to put in all the "ret = -1;" lines whenever
there is a failure.
ACK with that change (and after re-basing to account for the changes
requested in 1/3).
> int i;
> int interfacetype;
> @@ -1305,7 +1312,14 @@ qemuDomainMigrateOPDRelocate(struct qemud_driver *driver ATTRIBUTE_UNUSED,
> cookie->network->net[i]->portdata = NULL;
> break;
> case VIR_NETDEV_VPORT_PROFILE_OPENVSWITCH:
> - cookie->network->net[i]->portdata = NULL;
> + 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);
> + ret = -1;
> + goto error;
> + }
> break;
> default:
> cookie->network->net[i]->portdata = NULL;
> @@ -1314,6 +1328,7 @@ qemuDomainMigrateOPDRelocate(struct qemud_driver *driver ATTRIBUTE_UNUSED,
> }
> }
>
> +error:
> return ret;
> }
>
More information about the libvir-list
mailing list