qemuMigrationSrcBeginPhase: Don't call 'qemuBlockNodesEnsureActive' with offline VM

Commits 7b5566ce67 and f879d5f403 ( v11.8.0-92-gf879d5f403 )
moved around code for re-activating block backends after migration.
While previously it was done when migration failed now we do it when we
need qemu to do some block operations.

'qemuBlockNodesEnsureActive' is thus called also when 'VIR_MIGRATE_OFFLINE'
is used. This doesn't cause failure similar to previous patch only due
to a conincidence as 'qemuCaps' wasn't initialized yet and thus we
assume that QEMU doesn't support 'blockdev-set-active' and skip all
monitor code.

Make the code more robust and explicit by calling
'qemuBlockNodesEnsureActive' only on active VMs during migration.

Fixes: 7b5566ce67
Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Jiri Denemark <jdenemar@redhat.com>
This commit is contained in:
Peter Krempa committed 2026-03-24 17:59:35 +01:00
1 parent 59fde80f39
commit 4537c0b870
1 file changed
+2 -1
+2 -1
View File
@@ -2899,7 +2899,8 @@ qemuMigrationSrcBeginPhase(virQEMUDriver *driver,
vm->newDef && !qemuDomainVcpuHotplugIsInOrder(vm->newDef)))
cookieFlags |= QEMU_MIGRATION_COOKIE_CPU_HOTPLUG;
if (qemuBlockNodesEnsureActive(vm, vm->job->asyncJob) < 0)
if (virDomainObjIsActive(vm) &&
qemuBlockNodesEnsureActive(vm, vm->job->asyncJob) < 0)
return NULL;
return qemuMigrationSrcBeginXML(vm, xmlin,