[PATCH 1/5] move jobs enums QEMU_X into hypervisor as VIR_X

Michal Prívozník mprivozn at redhat.com
Fri Mar 25 13:53:16 UTC 2022


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 at 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



More information about the libvir-list mailing list