On 3/24/22 16:32, Kristina Hanicova wrote:
These enums are essentially the same and always sorted in the
same order in every hypervisor with jobs. They can be generalized
by using the qemu enums as the main ones as they are the most
extensive.
Signed-off-by: Kristina Hanicova <khanicov(a)redhat.com>
---
src/hypervisor/domain_job.c | 32 +++
src/hypervisor/domain_job.h | 52 +++++
src/hypervisor/meson.build | 1 +
src/libvirt_private.syms | 5 +
src/libxl/libxl_domain.c | 1 +
src/qemu/MIGRATION.txt | 6 +-
src/qemu/THREADS.txt | 16 +-
src/qemu/qemu_backup.c | 22 +-
src/qemu/qemu_block.c | 20 +-
src/qemu/qemu_block.h | 12 +-
src/qemu/qemu_blockjob.c | 32 +--
src/qemu/qemu_checkpoint.c | 18 +-
src/qemu/qemu_domain.c | 26 +--
src/qemu/qemu_domain.h | 4 +-
src/qemu/qemu_domainjob.c | 236 ++++++++++------------
src/qemu/qemu_domainjob.h | 85 ++------
src/qemu/qemu_driver.c | 332 +++++++++++++++----------------
src/qemu/qemu_hotplug.c | 50 ++---
src/qemu/qemu_hotplug.h | 10 +-
src/qemu/qemu_migration.c | 218 ++++++++++----------
src/qemu/qemu_migration.h | 8 +-
src/qemu/qemu_migration_params.c | 4 +-
src/qemu/qemu_process.c | 188 ++++++++---------
src/qemu/qemu_process.h | 22 +-
src/qemu/qemu_saveimage.c | 4 +-
src/qemu/qemu_saveimage.h | 4 +-
src/qemu/qemu_snapshot.c | 56 +++---
src/qemu/qemu_snapshot.h | 2 +-
28 files changed, 739 insertions(+), 727 deletions(-)
diff --git a/src/hypervisor/domain_job.c b/src/hypervisor/domain_job.c
index 9ac8a6d544..ff4e008cb5 100644
--- a/src/hypervisor/domain_job.c
+++ b/src/hypervisor/domain_job.c
@@ -9,6 +9,38 @@
#include "domain_job.h"
+VIR_ENUM_IMPL(virDomainJob,
+ VIR_JOB_LAST,
+ "none",
+ "query",
+ "destroy",
+ "suspend",
+ "modify",
+ "abort",
+ "migration operation",
+ "none", /* async job is never stored in job.active */
+ "async nested",
+);
+
+VIR_ENUM_IMPL(virDomainAgentJob,
+ VIR_AGENT_JOB_LAST,
+ "none",
+ "query",
+ "modify",
+);
+
+VIR_ENUM_IMPL(virDomainAsyncJob,
+ VIR_ASYNC_JOB_LAST,
+ "none",
+ "migration out",
+ "migration in",
+ "save",
+ "dump",
+ "snapshot",
+ "start",
+ "backup",
+);
+
virDomainJobData *
virDomainJobDataInit(virDomainJobDataPrivateDataCallbacks *cb)
{
diff --git a/src/hypervisor/domain_job.h b/src/hypervisor/domain_job.h
index 257ef067e4..b9d1107580 100644
--- a/src/hypervisor/domain_job.h
+++ b/src/hypervisor/domain_job.h
@@ -6,6 +6,58 @@
#pragma once
#include "internal.h"
+#include "virenum.h"
+
+/* Only 1 job is allowed at any time
+ * A job includes *all* monitor commands, even those just querying
+ * information, not merely actions */
+typedef enum {
+ VIR_JOB_NONE = 0, /* Always set to 0 for easy if (jobActive) conditions */
+ VIR_JOB_QUERY, /* Doesn't change any state */
+ VIR_JOB_DESTROY, /* Destroys the domain (cannot be masked out) */
+ VIR_JOB_SUSPEND, /* Suspends (stops vCPUs) the domain */
+ VIR_JOB_MODIFY, /* May change state */
+ VIR_JOB_ABORT, /* Abort current async job */
+ VIR_JOB_MIGRATION_OP, /* Operation influencing outgoing migration */
+
+ /* The following two items must always be the last items before JOB_LAST */
+ VIR_JOB_ASYNC, /* Asynchronous job */
+ VIR_JOB_ASYNC_NESTED, /* Normal job within an async job */
+
+ VIR_JOB_LAST
+} virDomainJob;
+VIR_ENUM_DECL(virDomainJob);
I was gonna suggest VIR_DOMAIN_JOB_* instead, but that's not possible
because that's already used by virDomainJobType which is a public enum.
So I guess this can stay then.
Michal