[libvirt] [PATCH] qemu: fix migration flags undefinesource cannot work

In commit f41be296, we moved vm->persistent check into qemuDomainRemoveInactive, but we didn't change the vm->persistent before call qemuDomainRemoveInactive in some place before and just call it to remove the inactive vm. Signed-off-by: Luyao Huang <lhuang@redhat.com> --- src/qemu/qemu_migration.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/qemu/qemu_migration.c b/src/qemu/qemu_migration.c index b53491a..2abf2ee 100644 --- a/src/qemu/qemu_migration.c +++ b/src/qemu/qemu_migration.c @@ -3912,8 +3912,10 @@ qemuMigrationConfirm(virConnectPtr conn, qemuMigrationJobFinish(driver, vm); if (!virDomainObjIsActive(vm)) { - if (flags & VIR_MIGRATE_UNDEFINE_SOURCE) + if (flags & VIR_MIGRATE_UNDEFINE_SOURCE) { virDomainDeleteConfig(cfg->configDir, cfg->autostartDir, vm); + vm->persistent = 0; + } qemuDomainRemoveInactive(driver, vm); } @@ -5405,8 +5407,10 @@ qemuMigrationPerformJob(virQEMUDriverPtr driver, qemuMigrationJobFinish(driver, vm); if (!virDomainObjIsActive(vm) && ret == 0) { - if (flags & VIR_MIGRATE_UNDEFINE_SOURCE) + if (flags & VIR_MIGRATE_UNDEFINE_SOURCE) { virDomainDeleteConfig(cfg->configDir, cfg->autostartDir, vm); + vm->persistent = 0; + } qemuDomainRemoveInactive(driver, vm); } -- 1.8.3.1

After commit a26669d7, we only jump to error when virDomainMigrateUnmanagedParams return a value less than -1. this will make the migrate result always be success even we meet some problem. Signed-off-by: Luyao Huang <lhuang@redhat.com> --- src/libvirt-domain.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libvirt-domain.c b/src/libvirt-domain.c index 6e1aacd..14aeb09 100644 --- a/src/libvirt-domain.c +++ b/src/libvirt-domain.c @@ -4478,7 +4478,7 @@ virDomainMigrateToURI3(virDomainPtr domain, dconnuri = NULL; if (virDomainMigrateUnmanagedParams(domain, dconnuri, - params, nparams, flags) < -1) + params, nparams, flags) < 0) goto error; return 0; -- 1.8.3.1

Remove the extra %s in error message when call virReportInvalidArg(). Signed-off-by: Luyao Huang <lhuang@redhat.com> --- src/libvirt-domain.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libvirt-domain.c b/src/libvirt-domain.c index 14aeb09..de7eb04 100644 --- a/src/libvirt-domain.c +++ b/src/libvirt-domain.c @@ -3303,7 +3303,7 @@ virDomainMigrateCheckNotLocal(const char *dconnuri) goto cleanup; if (!tempuri->server || STRPREFIX(tempuri->server, "localhost")) { virReportInvalidArg(dconnuri, "%s", - _("Attempt to migrate guest to the same host %s")); + _("Attempt to migrate guest to the same host")); goto cleanup; } -- 1.8.3.1

On Tue, Oct 27, 2015 at 04:53:59PM +0800, Luyao Huang wrote:
In commit f41be296, we moved vm->persistent check into qemuDomainRemoveInactive, but we didn't change the vm->persistent before call qemuDomainRemoveInactive in some place before and just call it to remove the inactive vm.
Signed-off-by: Luyao Huang <lhuang@redhat.com> --- src/qemu/qemu_migration.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-)
ACK to all three, pushed now.
diff --git a/src/qemu/qemu_migration.c b/src/qemu/qemu_migration.c index b53491a..2abf2ee 100644 --- a/src/qemu/qemu_migration.c +++ b/src/qemu/qemu_migration.c @@ -3912,8 +3912,10 @@ qemuMigrationConfirm(virConnectPtr conn,
qemuMigrationJobFinish(driver, vm); if (!virDomainObjIsActive(vm)) { - if (flags & VIR_MIGRATE_UNDEFINE_SOURCE) + if (flags & VIR_MIGRATE_UNDEFINE_SOURCE) { virDomainDeleteConfig(cfg->configDir, cfg->autostartDir, vm); + vm->persistent = 0; + } qemuDomainRemoveInactive(driver, vm); }
@@ -5405,8 +5407,10 @@ qemuMigrationPerformJob(virQEMUDriverPtr driver,
qemuMigrationJobFinish(driver, vm); if (!virDomainObjIsActive(vm) && ret == 0) { - if (flags & VIR_MIGRATE_UNDEFINE_SOURCE) + if (flags & VIR_MIGRATE_UNDEFINE_SOURCE) { virDomainDeleteConfig(cfg->configDir, cfg->autostartDir, vm); + vm->persistent = 0; + } qemuDomainRemoveInactive(driver, vm); }
-- 1.8.3.1
-- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list

On 10/27/2015 05:45 PM, Martin Kletzander wrote:
On Tue, Oct 27, 2015 at 04:53:59PM +0800, Luyao Huang wrote:
In commit f41be296, we moved vm->persistent check into qemuDomainRemoveInactive, but we didn't change the vm->persistent before call qemuDomainRemoveInactive in some place before and just call it to remove the inactive vm.
Signed-off-by: Luyao Huang <lhuang@redhat.com> --- src/qemu/qemu_migration.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-)
ACK to all three, pushed now.
Thanks a lot for your review. Luyao
diff --git a/src/qemu/qemu_migration.c b/src/qemu/qemu_migration.c index b53491a..2abf2ee 100644 --- a/src/qemu/qemu_migration.c +++ b/src/qemu/qemu_migration.c @@ -3912,8 +3912,10 @@ qemuMigrationConfirm(virConnectPtr conn,
qemuMigrationJobFinish(driver, vm); if (!virDomainObjIsActive(vm)) { - if (flags & VIR_MIGRATE_UNDEFINE_SOURCE) + if (flags & VIR_MIGRATE_UNDEFINE_SOURCE) { virDomainDeleteConfig(cfg->configDir, cfg->autostartDir, vm); + vm->persistent = 0; + } qemuDomainRemoveInactive(driver, vm); }
@@ -5405,8 +5407,10 @@ qemuMigrationPerformJob(virQEMUDriverPtr driver,
qemuMigrationJobFinish(driver, vm); if (!virDomainObjIsActive(vm) && ret == 0) { - if (flags & VIR_MIGRATE_UNDEFINE_SOURCE) + if (flags & VIR_MIGRATE_UNDEFINE_SOURCE) { virDomainDeleteConfig(cfg->configDir, cfg->autostartDir, vm); + vm->persistent = 0; + } qemuDomainRemoveInactive(driver, vm); }
-- 1.8.3.1
-- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list
participants (3)
-
lhuang
-
Luyao Huang
-
Martin Kletzander