diff options
author | Pavel Hrdina <phrdina@redhat.com> | 2022-06-21 15:22:15 +0200 |
---|---|---|
committer | Pavel Hrdina <phrdina@redhat.com> | 2023-01-09 13:32:43 +0100 |
commit | 07b54c3d5a8be7cd67dba97154fed6c01823844d (patch) | |
tree | f1050848104aa853e8efc61d4b076c4ebcf530cd /src | |
parent | 9a0ce66503d96f28159116f6710da37ab253e05b (diff) | |
download | libvirt-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.c | 12 | ||||
-rw-r--r-- | src/qemu/qemu_monitor.h | 5 | ||||
-rw-r--r-- | src/qemu/qemu_monitor_json.c | 22 | ||||
-rw-r--r-- | src/qemu/qemu_monitor_json.h | 5 |
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); |