summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorPavel Hrdina <phrdina@redhat.com>2022-06-21 15:22:15 +0200
committerPavel Hrdina <phrdina@redhat.com>2023-01-09 13:32:43 +0100
commit07b54c3d5a8be7cd67dba97154fed6c01823844d (patch)
treef1050848104aa853e8efc61d4b076c4ebcf530cd /src
parent9a0ce66503d96f28159116f6710da37ab253e05b (diff)
downloadlibvirt-07b54c3d5a8be7cd67dba97154fed6c01823844d.tar.gz
qemu_monitor: introduce qemuMonitorJobFinalize
Upcoming snapshot deletion code will require that multiple commit jobs are finished in sync. To allow aborting then if one fails we will need to use manual finalization of the jobs. This commit implements the monitor code for `job-finalize`. Signed-off-by: Pavel Hrdina <phrdina@redhat.com> Reviewed-by: Peter Krempa <pkrempa@redhat.com>
Diffstat (limited to 'src')
-rw-r--r--src/qemu/qemu_monitor.c12
-rw-r--r--src/qemu/qemu_monitor.h5
-rw-r--r--src/qemu/qemu_monitor_json.c22
-rw-r--r--src/qemu/qemu_monitor_json.h5
4 files changed, 44 insertions, 0 deletions
diff --git a/src/qemu/qemu_monitor.c b/src/qemu/qemu_monitor.c
index 6303200d1e..771b1b6d59 100644
--- a/src/qemu/qemu_monitor.c
+++ b/src/qemu/qemu_monitor.c
@@ -2933,6 +2933,18 @@ qemuMonitorJobDismiss(qemuMonitor *mon,
int
+qemuMonitorJobFinalize(qemuMonitor *mon,
+ const char *jobname)
+{
+ VIR_DEBUG("jobname=%s", jobname);
+
+ QEMU_CHECK_MONITOR(mon);
+
+ return qemuMonitorJSONJobFinalize(mon, jobname);
+}
+
+
+int
qemuMonitorJobComplete(qemuMonitor *mon,
const char *jobname)
{
diff --git a/src/qemu/qemu_monitor.h b/src/qemu/qemu_monitor.h
index 324eee5a89..f51146a13a 100644
--- a/src/qemu/qemu_monitor.h
+++ b/src/qemu/qemu_monitor.h
@@ -1029,6 +1029,11 @@ int qemuMonitorJobDismiss(qemuMonitor *mon,
const char *jobname)
ATTRIBUTE_NONNULL(2);
+int
+qemuMonitorJobFinalize(qemuMonitor *mon,
+ const char *jobname)
+ ATTRIBUTE_NONNULL(2);
+
int qemuMonitorJobComplete(qemuMonitor *mon,
const char *jobname)
ATTRIBUTE_NONNULL(2);
diff --git a/src/qemu/qemu_monitor_json.c b/src/qemu/qemu_monitor_json.c
index 3b96f4e037..4495f8f2cf 100644
--- a/src/qemu/qemu_monitor_json.c
+++ b/src/qemu/qemu_monitor_json.c
@@ -4406,6 +4406,28 @@ qemuMonitorJSONJobDismiss(qemuMonitor *mon,
int
+qemuMonitorJSONJobFinalize(qemuMonitor *mon,
+ const char *jobname)
+{
+ g_autoptr(virJSONValue) cmd = NULL;
+ g_autoptr(virJSONValue) reply = NULL;
+
+ if (!(cmd = qemuMonitorJSONMakeCommand("job-finalize",
+ "s:id", jobname,
+ NULL)))
+ return -1;
+
+ if (qemuMonitorJSONCommand(mon, cmd, &reply) < 0)
+ return -1;
+
+ if (qemuMonitorJSONBlockJobError(cmd, reply, jobname) < 0)
+ return -1;
+
+ return 0;
+}
+
+
+int
qemuMonitorJSONJobComplete(qemuMonitor *mon,
const char *jobname)
{
diff --git a/src/qemu/qemu_monitor_json.h b/src/qemu/qemu_monitor_json.h
index a86f054b8b..d774cbaf14 100644
--- a/src/qemu/qemu_monitor_json.h
+++ b/src/qemu/qemu_monitor_json.h
@@ -378,6 +378,11 @@ qemuMonitorJSONJobDismiss(qemuMonitor *mon,
ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2);
int
+qemuMonitorJSONJobFinalize(qemuMonitor *mon,
+ const char *jobname)
+ ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2);
+
+int
qemuMonitorJSONJobComplete(qemuMonitor *mon,
const char *jobname)
ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2);