]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
qemu: monitor: Add 'force' argument for 'block-job-cancel' QMP command
authorPeter Krempa <pkrempa@redhat.com>
Tue, 20 Apr 2021 12:14:51 +0000 (14:14 +0200)
committerPeter Krempa <pkrempa@redhat.com>
Mon, 26 Apr 2021 15:22:52 +0000 (17:22 +0200)
In certain cases such as when aborting migration we don't really care
for completion of the blockjob. Add 'force' as parameter of
'block-job-cancel'.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
src/qemu/qemu_driver.c
src/qemu/qemu_migration.c
src/qemu/qemu_monitor.c
src/qemu/qemu_monitor.h
src/qemu/qemu_monitor_json.c
src/qemu/qemu_monitor_json.h
tests/qemumonitorjsontest.c

index d908e95ba795f8cec4f9913ec199b35df733c903..7a9ad034896d8098662984d4d0500d8f003440f3 100644 (file)
@@ -14510,7 +14510,7 @@ qemuDomainBlockJobAbort(virDomainPtr dom,
         if (blockdev)
             ret = qemuMonitorJobCancel(priv->mon, job->name, false);
         else
-            ret = qemuMonitorBlockJobCancel(priv->mon, job->name);
+            ret = qemuMonitorBlockJobCancel(priv->mon, job->name, false);
         if (qemuDomainObjExitMonitor(driver, vm) < 0) {
             ret = -1;
             goto endjob;
index 3a622d38cd79e3a021b62b2b475c9849a5636f35..e10a85c5215f35cc096202c2633927a946d4b529 100644 (file)
@@ -748,7 +748,7 @@ qemuMigrationSrcNBDCopyCancelOne(virQEMUDriver *driver,
     if (qemuDomainObjEnterMonitorAsync(driver, vm, asyncJob) < 0)
         return -1;
 
-    rv = qemuMonitorBlockJobCancel(priv->mon, job->name);
+    rv = qemuMonitorBlockJobCancel(priv->mon, job->name, false);
 
     if (qemuDomainObjExitMonitor(driver, vm) < 0 || rv < 0)
         return -1;
index f3f14c46b67ad56596c7a09b29eaf18d5552df34..fa8a027aa643d48a5a129afbd1089fc3f606ba1f 100644 (file)
@@ -3403,13 +3403,14 @@ qemuMonitorBlockStream(qemuMonitor *mon,
 
 int
 qemuMonitorBlockJobCancel(qemuMonitor *mon,
-                          const char *jobname)
+                          const char *jobname,
+                          bool force)
 {
-    VIR_DEBUG("jobname=%s", jobname);
+    VIR_DEBUG("jobname=%s force=%d", jobname, force);
 
     QEMU_CHECK_MONITOR(mon);
 
-    return qemuMonitorJSONBlockJobCancel(mon, jobname);
+    return qemuMonitorJSONBlockJobCancel(mon, jobname, force);
 }
 
 
index 230d00a894d9cd758c6c1885b01057be1936c78a..95f1a10e315513d1fe88c684923078dbf058a4f6 100644 (file)
@@ -1081,7 +1081,8 @@ int qemuMonitorBlockStream(qemuMonitor *mon,
     ATTRIBUTE_NONNULL(2);
 
 int qemuMonitorBlockJobCancel(qemuMonitor *mon,
-                              const char *jobname)
+                              const char *jobname,
+                              bool force)
     ATTRIBUTE_NONNULL(2);
 
 int qemuMonitorBlockJobSetSpeed(qemuMonitor *mon,
index 8f3ccb0c63607f16f0f2cffc10ed88f8386747f2..dc74c86158cda502d0a4df2fcbabab29dc5158dd 100644 (file)
@@ -5217,13 +5217,15 @@ qemuMonitorJSONBlockStream(qemuMonitor *mon,
 
 int
 qemuMonitorJSONBlockJobCancel(qemuMonitor *mon,
-                              const char *jobname)
+                              const char *jobname,
+                              bool force)
 {
     g_autoptr(virJSONValue) cmd = NULL;
     g_autoptr(virJSONValue) reply = NULL;
 
     if (!(cmd = qemuMonitorJSONMakeCommand("block-job-cancel",
                                            "s:device", jobname,
+                                           "B:force", force,
                                            NULL)))
         return -1;
 
index 0846325a8131d9b5e194d408fa6e5a6f8c22afaf..486ba5a593a39f3ab6ca9112261f9e028f2f00a1 100644 (file)
@@ -325,7 +325,8 @@ int qemuMonitorJSONBlockStream(qemuMonitor *mon,
     ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2);
 
 int qemuMonitorJSONBlockJobCancel(qemuMonitor *mon,
-                                  const char *jobname)
+                                  const char *jobname,
+                                  bool force)
     ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2);
 
 int
index 8ed6509159ac0b5c2ee2caca2b6f2ac3d883665e..9e53b652894e9e94d4432f10a31e91c9b6054dd3 100644 (file)
@@ -1218,7 +1218,7 @@ GEN_TEST_FUNC(qemuMonitorJSONBitmapRemove, "foodev", "newnode")
 GEN_TEST_FUNC(qemuMonitorJSONJobDismiss, "jobname")
 GEN_TEST_FUNC(qemuMonitorJSONJobCancel, "jobname", false)
 GEN_TEST_FUNC(qemuMonitorJSONJobComplete, "jobname")
-GEN_TEST_FUNC(qemuMonitorJSONBlockJobCancel, "jobname")
+GEN_TEST_FUNC(qemuMonitorJSONBlockJobCancel, "jobname", true)
 
 static int
 testQemuMonitorJSONqemuMonitorJSONNBDServerStart(const void *opaque)