mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-02-22 19:32:19 +00:00
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>
This commit is contained in:
parent
9a0ce66503
commit
07b54c3d5a
@ -2932,6 +2932,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)
|
||||
|
@ -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);
|
||||
|
@ -4405,6 +4405,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)
|
||||
|
@ -377,6 +377,11 @@ qemuMonitorJSONJobDismiss(qemuMonitor *mon,
|
||||
const char *jobname)
|
||||
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)
|
||||
|
@ -1223,6 +1223,7 @@ GEN_TEST_FUNC(qemuMonitorJSONBlockdevMediumInsert, "foodev", "newnode")
|
||||
GEN_TEST_FUNC(qemuMonitorJSONBitmapRemove, "foodev", "newnode")
|
||||
GEN_TEST_FUNC(qemuMonitorJSONJobDismiss, "jobname")
|
||||
GEN_TEST_FUNC(qemuMonitorJSONJobComplete, "jobname")
|
||||
GEN_TEST_FUNC(qemuMonitorJSONJobFinalize, "jobname")
|
||||
GEN_TEST_FUNC(qemuMonitorJSONBlockJobCancel, "jobname", true)
|
||||
GEN_TEST_FUNC(qemuMonitorJSONSetAction,
|
||||
QEMU_MONITOR_ACTION_SHUTDOWN_PAUSE,
|
||||
@ -2921,6 +2922,7 @@ mymain(void)
|
||||
DO_TEST_GEN(qemuMonitorJSONBitmapRemove);
|
||||
DO_TEST_GEN(qemuMonitorJSONJobDismiss);
|
||||
DO_TEST_GEN(qemuMonitorJSONJobComplete);
|
||||
DO_TEST_GEN(qemuMonitorJSONJobFinalize);
|
||||
DO_TEST_GEN(qemuMonitorJSONBlockJobCancel);
|
||||
DO_TEST_GEN(qemuMonitorJSONSetAction);
|
||||
DO_TEST_GEN(qemuMonitorJSONSetLaunchSecurityState);
|
||||
|
Loading…
x
Reference in New Issue
Block a user