From 23119db00e193d218a6456fa1fb30cb25d9d518f Mon Sep 17 00:00:00 2001 From: Christian Benvenuti Date: Tue, 27 Mar 2012 13:00:01 -0700 Subject: [PATCH] qemu: Make migration fail when port profile association fails on the dst host --- src/qemu/qemu_migration.c | 20 ++++++++++++++++---- 1 files changed, 16 insertions(+), 4 deletions(-) diff --git a/src/qemu/qemu_migration.c b/src/qemu/qemu_migration.c index 802785f..c30c40b 100644 --- a/src/qemu/qemu_migration.c +++ b/src/qemu/qemu_migration.c @@ -2716,7 +2716,7 @@ qemuMigrationPerform(struct qemud_driver *driver, } } -static void +static int qemuMigrationVPAssociatePortProfiles(virDomainDefPtr def) { int i; int last_good_net = -1; @@ -2731,13 +2731,17 @@ qemuMigrationVPAssociatePortProfiles(virDomainDefPtr def) { virDomainNetGetActualDirectDev(net), -1, def->uuid, - VIR_NETDEV_VPORT_PROFILE_OP_MIGRATE_IN_FINISH, false) < 0) + VIR_NETDEV_VPORT_PROFILE_OP_MIGRATE_IN_FINISH, + false) < 0) { + VIR_ERROR("Port profile Associate failed for %s", net->ifname); goto err_exit; + } + VIR_DEBUG("Port profile Associate succeeded for %s", net->ifname); } last_good_net = i; } - return; + return 0; err_exit: for (i = 0; i < last_good_net; i++) { @@ -2751,6 +2755,7 @@ err_exit: VIR_NETDEV_VPORT_PROFILE_OP_MIGRATE_IN_FINISH)); } } + return -1; } @@ -2805,7 +2810,14 @@ qemuMigrationFinish(struct qemud_driver *driver, goto endjob; } - qemuMigrationVPAssociatePortProfiles(vm->def); + if (qemuMigrationVPAssociatePortProfiles(vm->def) < 0) { + qemuProcessStop(driver, vm, 1, VIR_DOMAIN_SHUTOFF_FAILED); + virDomainAuditStop(vm, "failed"); + event = virDomainEventNewFromObj(vm, + VIR_DOMAIN_EVENT_STOPPED, + VIR_DOMAIN_EVENT_STOPPED_FAILED); + goto endjob; + } if (flags & VIR_MIGRATE_PERSIST_DEST) { virDomainDefPtr vmdef; -- 1.7.1