
From: Peter Krempa <pkrempa@redhat.com> The other code paths which do want to issue block jobs can reactivate the nodes when necessary so we don't need to do that unconditionally after failed/cancelled migration. Signed-off-by: Peter Krempa <pkrempa@redhat.com> --- src/qemu/qemu_migration.c | 50 ++------------------------------------- 1 file changed, 2 insertions(+), 48 deletions(-) diff --git a/src/qemu/qemu_migration.c b/src/qemu/qemu_migration.c index a11d1d8452..9109c4526d 100644 --- a/src/qemu/qemu_migration.c +++ b/src/qemu/qemu_migration.c @@ -220,43 +220,6 @@ qemuMigrationSrcStoreDomainState(virDomainObj *vm) } -/** - * qemuMigrationBlockNodesReactivate: - * - * In case when we're keeping the VM paused qemu will not re-activate the block - * device backend tree so blockjobs would fail. In case when qemu supports the - * 'blockdev-set-active' command this function will re-activate the block nodes. - */ -static void -qemuMigrationBlockNodesReactivate(virDomainObj *vm, - virDomainAsyncJob asyncJob) -{ - virErrorPtr orig_err; - qemuDomainObjPrivate *priv = vm->privateData; - int rc; - - if (!virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_BLOCKDEV_SET_ACTIVE)) - return; - - VIR_DEBUG("re-activating block nodes"); - - virErrorPreserveLast(&orig_err); - - if (qemuDomainObjEnterMonitorAsync(vm, asyncJob) < 0) - goto cleanup; - - rc = qemuMonitorBlockdevSetActive(priv->mon, NULL, true); - - qemuDomainObjExitMonitor(vm); - - if (rc < 0) - VIR_WARN("failed to re-activate block nodes after migration of VM '%s'", vm->def->name); - - cleanup: - virErrorRestore(&orig_err); -} - - static void qemuMigrationSrcRestoreDomainState(virQEMUDriver *driver, virDomainObj *vm) { @@ -279,11 +242,11 @@ qemuMigrationSrcRestoreDomainState(virQEMUDriver *driver, virDomainObj *vm) if (preMigrationState != VIR_DOMAIN_RUNNING || state != VIR_DOMAIN_PAUSED) - goto reactivate; + return; if (reason == VIR_DOMAIN_PAUSED_IOERROR) { VIR_DEBUG("Domain is paused due to I/O error, skipping resume"); - goto reactivate; + return; } VIR_DEBUG("Restoring pre-migration state due to migration error"); @@ -306,14 +269,7 @@ qemuMigrationSrcRestoreDomainState(virQEMUDriver *driver, virDomainObj *vm) VIR_DOMAIN_EVENT_SUSPENDED_API_ERROR); virObjectEventStateQueue(driver->domainEventState, event); } - - goto reactivate; } - - return; - - reactivate: - qemuMigrationBlockNodesReactivate(vm, VIR_ASYNC_JOB_MIGRATION_OUT); } @@ -6891,8 +6847,6 @@ qemuMigrationDstFinishFresh(virQEMUDriver *driver, if (*inPostCopy) *doKill = false; - } else { - qemuMigrationBlockNodesReactivate(vm, VIR_ASYNC_JOB_MIGRATION_IN); } if (mig->jobData) { -- 2.51.0