On Thu, Sep 01, 2022 at 14:47:40 +0200, Jiri Denemark wrote:
We will need a little bit more code around qemuMonitorMigrateCancel
to
make sure it works as expected. The new qemuMigrationSrcCancel helper
will avoid repeating the code in several places.
Signed-off-by: Jiri Denemark <jdenemar(a)redhat.com>
---
src/qemu/qemu_driver.c | 9 +--------
src/qemu/qemu_migration.c | 37 +++++++++++++++++++++++--------------
src/qemu/qemu_migration.h | 4 ++++
src/qemu/qemu_process.c | 5 +----
4 files changed, 29 insertions(+), 26 deletions(-)
diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
index 707f4cc1bb..a86efc769a 100644
--- a/src/qemu/qemu_driver.c
+++ b/src/qemu/qemu_driver.c
@@ -12808,17 +12808,10 @@ qemuDomainGetJobStats(virDomainPtr dom,
static int
qemuDomainAbortJobMigration(virDomainObj *vm)
{
- qemuDomainObjPrivate *priv = vm->privateData;
- int ret;
-
VIR_DEBUG("Cancelling migration job at client request");
qemuDomainObjAbortAsyncJob(vm);
- qemuDomainObjEnterMonitor(vm);
- ret = qemuMonitorMigrateCancel(priv->mon);
So this caller cared about the return value of
'qemuMonitorMigrateCancel' ...
- qemuDomainObjExitMonitor(vm);
-
- return ret;
+ return qemuMigrationSrcCancel(vm, VIR_ASYNC_JOB_NONE);
}
diff --git a/src/qemu/qemu_migration.c b/src/qemu/qemu_migration.c
index 67d83ca743..5845dfdb9c 100644
--- a/src/qemu/qemu_migration.c
+++ b/src/qemu/qemu_migration.c
@@ -4611,6 +4611,24 @@ qemuMigrationSrcStart(virDomainObj *vm,
}
+int
+qemuMigrationSrcCancel(virDomainObj *vm,
+ virDomainAsyncJob asyncJob)
+{
+ qemuDomainObjPrivate *priv = vm->privateData;
+
+ VIR_DEBUG("Cancelling outgoing migration of domain %s",
vm->def->name);
+
+ if (qemuDomainObjEnterMonitorAsync(vm, asyncJob) < 0)
+ return -1;
+
+ qemuMonitorMigrateCancel(priv->mon);
... but here you don't propagate it out. Instead the only possibility
for this function to fail is from 'qemuDomainObjEnterMonitorAsync', but
any caller that pases non-NONE asyncjob doesn't care about the return
value at all.
+ qemuDomainObjExitMonitor(vm);
+
+ return 0;
+}
+
+
Also consider adding a comment too.
With the above bug fixed:
Reviewed-by: Peter Krempa <pkrempa(a)redhat.com>