[PATCH 0/5] hypervisor: move job object into hypervisor

This series moves generalized qemu job object into hypervisor/ and replaces all other hypervisor-specific job objects. Kristina Hanicova (5): qemu & hypervisor: move job object into hypervisor hypervisor: domain_job: rename members in virDomainObjPrivateJobCallbacks LXC: use virDomainJobObj libxl: use virDomainJobObj CH: use virDomainJobObj src/ch/ch_domain.c | 4 +- src/ch/ch_domain.h | 9 +---- src/hypervisor/domain_job.h | 62 ++++++++++++++++++++++++++++++ src/libxl/libxl_domain.c | 6 +-- src/libxl/libxl_domain.h | 11 +----- src/lxc/lxc_domain.c | 4 +- src/lxc/lxc_domain.h | 9 +---- src/qemu/qemu_domain.c | 10 ++--- src/qemu/qemu_domain.h | 2 +- src/qemu/qemu_domainjob.c | 26 ++++++------- src/qemu/qemu_domainjob.h | 66 +++----------------------------- src/qemu/qemu_migration.c | 2 +- src/qemu/qemu_migration.h | 2 +- src/qemu/qemu_migration_params.c | 2 +- src/qemu/qemu_process.c | 12 +++--- 15 files changed, 106 insertions(+), 121 deletions(-) -- 2.35.3

This patch moves qemuDomainJobObj into hypervisor/ as generalized virDomainJobObj along with generalized private job callbacks as virDomainObjPrivateJobCallbacks. Signed-off-by: Kristina Hanicova <khanicov@redhat.com> --- src/hypervisor/domain_job.h | 62 ++++++++++++++++++++++++++++++ src/qemu/qemu_domain.c | 6 +-- src/qemu/qemu_domain.h | 2 +- src/qemu/qemu_domainjob.c | 22 +++++------ src/qemu/qemu_domainjob.h | 66 +++----------------------------- src/qemu/qemu_migration.c | 2 +- src/qemu/qemu_migration.h | 2 +- src/qemu/qemu_migration_params.c | 2 +- src/qemu/qemu_process.c | 12 +++--- 9 files changed, 91 insertions(+), 85 deletions(-) diff --git a/src/hypervisor/domain_job.h b/src/hypervisor/domain_job.h index 30f950ec23..c56c22e63c 100644 --- a/src/hypervisor/domain_job.h +++ b/src/hypervisor/domain_job.h @@ -7,6 +7,9 @@ #include "internal.h" #include "virenum.h" +#include "virthread.h" +#include "virbuffer.h" +#include "domain_conf.h" #define JOB_MASK(job) (job == 0 ? 0 : 1 << (job - 1)) #define VIR_JOB_DEFAULT_MASK \ @@ -99,6 +102,7 @@ struct _virDomainJobDataPrivateDataCallbacks { virDomainJobDataPrivateDataFree freePrivateData; }; + typedef struct _virDomainJobData virDomainJobData; struct _virDomainJobData { virDomainJobType jobType; @@ -139,3 +143,61 @@ virDomainJobDataCopy(virDomainJobData *data); virDomainJobType virDomainJobStatusToType(virDomainJobStatus status); + + +typedef struct _virDomainObjPrivateJobCallbacks virDomainObjPrivateJobCallbacks; + +typedef struct _virDomainJobObj virDomainJobObj; +struct _virDomainJobObj { + virCond cond; /* Use to coordinate jobs */ + + int jobsQueued; + + /* The following members are for VIR_JOB_* */ + virDomainJob active; /* currently running job */ + unsigned long long owner; /* Thread id which set current job */ + char *ownerAPI; /* The API which owns the job */ + unsigned long long started; /* When the current job started */ + + /* The following members are for VIR_AGENT_JOB_* */ + virDomainAgentJob agentActive; /* Currently running agent job */ + unsigned long long agentOwner; /* Thread id which set current agent job */ + char *agentOwnerAPI; /* The API which owns the agent job */ + unsigned long long agentStarted; /* When the current agent job started */ + + /* The following members are for VIR_ASYNC_JOB_* */ + virCond asyncCond; /* Use to coordinate with async jobs */ + virDomainAsyncJob asyncJob; /* Currently active async job */ + unsigned long long asyncOwner; /* Thread which set current async job */ + char *asyncOwnerAPI; /* The API which owns the async job */ + unsigned long long asyncStarted; /* When the current async job started */ + int phase; /* Job phase (mainly for migrations) */ + unsigned long long mask; /* Jobs allowed during async job */ + virDomainJobData *current; /* async job progress data */ + virDomainJobData *completed; /* statistics data of a recently completed job */ + bool abortJob; /* abort of the job requested */ + char *error; /* job event completion error */ + unsigned long apiFlags; /* flags passed to the API which started the async job */ + + void *privateData; /* job specific collection of data */ + virDomainObjPrivateJobCallbacks *cb; +}; + + +typedef void *(*virDomainObjPrivateJobAlloc)(void); +typedef void (*virDomainObjPrivateJobFree)(void *); +typedef void (*virDomainObjPrivateJobReset)(void *); +typedef int (*virDomainObjPrivateJobFormat)(virBuffer *, + virDomainJobObj *, + virDomainObj *); +typedef int (*virDomainObjPrivateJobParse)(xmlXPathContextPtr, + virDomainJobObj *, + virDomainObj *); + +struct _virDomainObjPrivateJobCallbacks { + virDomainObjPrivateJobAlloc allocJobPrivate; + virDomainObjPrivateJobFree freeJobPrivate; + virDomainObjPrivateJobReset resetJobPrivate; + virDomainObjPrivateJobFormat formatJob; + virDomainObjPrivateJobParse parseJob; +}; diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c index 94b2e3118c..a643dd03af 100644 --- a/src/qemu/qemu_domain.c +++ b/src/qemu/qemu_domain.c @@ -199,7 +199,7 @@ qemuDomainObjPrivateXMLFormatMigrateTempBitmap(virBuffer *buf, static int qemuDomainFormatJobPrivate(virBuffer *buf, - qemuDomainJobObj *job, + virDomainJobObj *job, virDomainObj *vm) { qemuDomainJobPrivate *priv = job->privateData; @@ -342,7 +342,7 @@ qemuDomainObjPrivateXMLParseMigrateTempBitmap(qemuDomainJobPrivate *jobPriv, static int qemuDomainParseJobPrivate(xmlXPathContextPtr ctxt, - qemuDomainJobObj *job, + virDomainJobObj *job, virDomainObj *vm) { qemuDomainJobPrivate *priv = job->privateData; @@ -360,7 +360,7 @@ qemuDomainParseJobPrivate(xmlXPathContextPtr ctxt, } -static qemuDomainObjPrivateJobCallbacks qemuPrivateJobCallbacks = { +static virDomainObjPrivateJobCallbacks qemuPrivateJobCallbacks = { .allocJobPrivate = qemuJobAllocPrivate, .freeJobPrivate = qemuJobFreePrivate, .resetJobPrivate = qemuJobResetPrivate, diff --git a/src/qemu/qemu_domain.h b/src/qemu/qemu_domain.h index 499ad03f91..4680df1098 100644 --- a/src/qemu/qemu_domain.h +++ b/src/qemu/qemu_domain.h @@ -99,7 +99,7 @@ typedef struct _qemuDomainObjPrivate qemuDomainObjPrivate; struct _qemuDomainObjPrivate { virQEMUDriver *driver; - qemuDomainJobObj job; + virDomainJobObj job; virBitmap *namespaces; diff --git a/src/qemu/qemu_domainjob.c b/src/qemu/qemu_domainjob.c index 1f6d976558..05480239b1 100644 --- a/src/qemu/qemu_domainjob.c +++ b/src/qemu/qemu_domainjob.c @@ -151,8 +151,8 @@ qemuDomainEventEmitJobCompleted(virQEMUDriver *driver, int -qemuDomainObjInitJob(qemuDomainJobObj *job, - qemuDomainObjPrivateJobCallbacks *cb) +qemuDomainObjInitJob(virDomainJobObj *job, + virDomainObjPrivateJobCallbacks *cb) { memset(job, 0, sizeof(*job)); job->cb = cb; @@ -177,7 +177,7 @@ qemuDomainObjInitJob(qemuDomainJobObj *job, static void -qemuDomainObjResetJob(qemuDomainJobObj *job) +qemuDomainObjResetJob(virDomainJobObj *job) { job->active = VIR_JOB_NONE; job->owner = 0; @@ -187,7 +187,7 @@ qemuDomainObjResetJob(qemuDomainJobObj *job) static void -qemuDomainObjResetAgentJob(qemuDomainJobObj *job) +qemuDomainObjResetAgentJob(virDomainJobObj *job) { job->agentActive = VIR_AGENT_JOB_NONE; job->agentOwner = 0; @@ -197,7 +197,7 @@ qemuDomainObjResetAgentJob(qemuDomainJobObj *job) static void -qemuDomainObjResetAsyncJob(qemuDomainJobObj *job) +qemuDomainObjResetAsyncJob(virDomainJobObj *job) { job->asyncJob = VIR_ASYNC_JOB_NONE; job->asyncOwner = 0; @@ -226,7 +226,7 @@ qemuDomainObjResetAsyncJob(qemuDomainJobObj *job) */ int qemuDomainObjPreserveJob(virDomainObj *obj, - qemuDomainJobObj *job) + virDomainJobObj *job) { qemuDomainObjPrivate *priv = obj->privateData; @@ -262,7 +262,7 @@ qemuDomainObjRestoreAsyncJob(virDomainObj *vm, unsigned long long allowedJobs) { qemuDomainObjPrivate *priv = vm->privateData; - qemuDomainJobObj *job = &priv->job; + virDomainJobObj *job = &priv->job; VIR_DEBUG("Restoring %s async job for domain %s", virDomainAsyncJobTypeToString(asyncJob), vm->def->name); @@ -287,7 +287,7 @@ qemuDomainObjRestoreAsyncJob(virDomainObj *vm, void -qemuDomainObjClearJob(qemuDomainJobObj *job) +qemuDomainObjClearJob(virDomainJobObj *job) { qemuDomainObjResetJob(job); qemuDomainObjResetAsyncJob(job); @@ -820,7 +820,7 @@ qemuDomainObjReleaseAsyncJob(virDomainObj *obj) } static bool -qemuDomainNestedJobAllowed(qemuDomainJobObj *jobs, virDomainJob newJob) +qemuDomainNestedJobAllowed(virDomainJobObj *jobs, virDomainJob newJob) { return !jobs->asyncJob || newJob == VIR_JOB_NONE || @@ -828,7 +828,7 @@ qemuDomainNestedJobAllowed(qemuDomainJobObj *jobs, virDomainJob newJob) } static bool -qemuDomainObjCanSetJob(qemuDomainJobObj *job, +qemuDomainObjCanSetJob(virDomainJobObj *job, virDomainJob newJob, virDomainAgentJob newAgentJob) { @@ -1308,7 +1308,7 @@ qemuDomainObjPrivateXMLParseJob(virDomainObj *vm, xmlXPathContextPtr ctxt) { qemuDomainObjPrivate *priv = vm->privateData; - qemuDomainJobObj *job = &priv->job; + virDomainJobObj *job = &priv->job; VIR_XPATH_NODE_AUTORESTORE(ctxt) g_autofree char *tmp = NULL; diff --git a/src/qemu/qemu_domainjob.h b/src/qemu/qemu_domainjob.h index e8021a7f04..b39b04edcb 100644 --- a/src/qemu/qemu_domainjob.h +++ b/src/qemu/qemu_domainjob.h @@ -60,62 +60,6 @@ struct _qemuDomainJobDataPrivate { extern virDomainJobDataPrivateDataCallbacks qemuJobDataPrivateDataCallbacks; -typedef struct _qemuDomainJobObj qemuDomainJobObj; - -typedef void *(*qemuDomainObjPrivateJobAlloc)(void); -typedef void (*qemuDomainObjPrivateJobFree)(void *); -typedef void (*qemuDomainObjPrivateJobReset)(void *); -typedef int (*qemuDomainObjPrivateJobFormat)(virBuffer *, - qemuDomainJobObj *, - virDomainObj *); -typedef int (*qemuDomainObjPrivateJobParse)(xmlXPathContextPtr, - qemuDomainJobObj *, - virDomainObj *); - -typedef struct _qemuDomainObjPrivateJobCallbacks qemuDomainObjPrivateJobCallbacks; -struct _qemuDomainObjPrivateJobCallbacks { - qemuDomainObjPrivateJobAlloc allocJobPrivate; - qemuDomainObjPrivateJobFree freeJobPrivate; - qemuDomainObjPrivateJobReset resetJobPrivate; - qemuDomainObjPrivateJobFormat formatJob; - qemuDomainObjPrivateJobParse parseJob; -}; - -struct _qemuDomainJobObj { - virCond cond; /* Use to coordinate jobs */ - - int jobsQueued; - - /* The following members are for VIR_JOB_* */ - virDomainJob active; /* Currently running job */ - unsigned long long owner; /* Thread id which set current job */ - char *ownerAPI; /* The API which owns the job */ - unsigned long long started; /* When the current job started */ - - /* The following members are for VIR_AGENT_JOB_* */ - virDomainAgentJob agentActive; /* Currently running agent job */ - unsigned long long agentOwner; /* Thread id which set current agent job */ - char *agentOwnerAPI; /* The API which owns the agent job */ - unsigned long long agentStarted; /* When the current agent job started */ - - /* The following members are for VIR_ASYNC_JOB_* */ - virCond asyncCond; /* Use to coordinate with async jobs */ - virDomainAsyncJob asyncJob; /* Currently active async job */ - unsigned long long asyncOwner; /* Thread which set current async job */ - char *asyncOwnerAPI; /* The API which owns the async job */ - unsigned long long asyncStarted; /* When the current async job started */ - int phase; /* Job phase (mainly for migrations) */ - unsigned long long mask; /* Jobs allowed during async job */ - virDomainJobData *current; /* async job progress data */ - virDomainJobData *completed; /* statistics data of a recently completed job */ - bool abortJob; /* abort of the job requested */ - char *error; /* job event completion error */ - unsigned long apiFlags; /* flags passed to the API which started the async job */ - - void *privateData; /* job specific collection of data */ - qemuDomainObjPrivateJobCallbacks *cb; -}; - void qemuDomainJobSetStatsType(virDomainJobData *jobData, qemuDomainJobStatsType type); @@ -162,7 +106,7 @@ qemuDomainObjStartJobPhase(virDomainObj *obj, void qemuDomainObjSetAsyncJobMask(virDomainObj *obj, unsigned long long allowedJobs); int qemuDomainObjPreserveJob(virDomainObj *obj, - qemuDomainJobObj *job); + virDomainJobObj *job); void qemuDomainObjRestoreAsyncJob(virDomainObj *vm, virDomainAsyncJob asyncJob, @@ -191,12 +135,12 @@ int qemuDomainJobDataToParams(virDomainJobData *jobData, bool qemuDomainTrackJob(virDomainJob job); -void qemuDomainObjClearJob(qemuDomainJobObj *job); -G_DEFINE_AUTO_CLEANUP_CLEAR_FUNC(qemuDomainJobObj, qemuDomainObjClearJob); +void qemuDomainObjClearJob(virDomainJobObj *job); +G_DEFINE_AUTO_CLEANUP_CLEAR_FUNC(virDomainJobObj, qemuDomainObjClearJob); int -qemuDomainObjInitJob(qemuDomainJobObj *job, - qemuDomainObjPrivateJobCallbacks *cb); +qemuDomainObjInitJob(virDomainJobObj *job, + virDomainObjPrivateJobCallbacks *cb); int qemuDomainObjPrivateXMLFormatJob(virBuffer *buf, diff --git a/src/qemu/qemu_migration.c b/src/qemu/qemu_migration.c index b12cb518ee..b096e56824 100644 --- a/src/qemu/qemu_migration.c +++ b/src/qemu/qemu_migration.c @@ -6385,7 +6385,7 @@ qemuMigrationDstComplete(virQEMUDriver *driver, virDomainObj *vm, bool inPostCopy, virDomainAsyncJob asyncJob, - qemuDomainJobObj *job) + virDomainJobObj *job) { qemuDomainObjPrivate *priv = vm->privateData; qemuDomainJobPrivate *jobPriv = job->privateData; diff --git a/src/qemu/qemu_migration.h b/src/qemu/qemu_migration.h index 81cc1e91c0..65c29d5744 100644 --- a/src/qemu/qemu_migration.h +++ b/src/qemu/qemu_migration.h @@ -204,7 +204,7 @@ qemuMigrationDstComplete(virQEMUDriver *driver, virDomainObj *vm, bool inPostCopy, virDomainAsyncJob asyncJob, - qemuDomainJobObj *job); + virDomainJobObj *job); int qemuMigrationSrcConfirm(virQEMUDriver *driver, diff --git a/src/qemu/qemu_migration_params.c b/src/qemu/qemu_migration_params.c index 0bce358ac3..1fd0c55905 100644 --- a/src/qemu/qemu_migration_params.c +++ b/src/qemu/qemu_migration_params.c @@ -1181,7 +1181,7 @@ qemuMigrationParamsGetULL(qemuMigrationParams *migParams, * qemuMigrationParamsCheck: * * Check supported migration parameters and keep their original values in - * qemuDomainJobObj so that we can properly reset them at the end of migration. + * virDomainJobObj so that we can properly reset them at the end of migration. * Reports an error if any of the currently used capabilities in @migParams * are unsupported by QEMU. */ diff --git a/src/qemu/qemu_process.c b/src/qemu/qemu_process.c index 486be9344a..d42333195a 100644 --- a/src/qemu/qemu_process.c +++ b/src/qemu/qemu_process.c @@ -3457,7 +3457,7 @@ qemuProcessCleanupMigrationJob(virQEMUDriver *driver, static void qemuProcessRestoreMigrationJob(virDomainObj *vm, - qemuDomainJobObj *job) + virDomainJobObj *job) { qemuDomainObjPrivate *priv = vm->privateData; qemuDomainJobPrivate *jobPriv = job->privateData; @@ -3496,7 +3496,7 @@ qemuProcessRestoreMigrationJob(virDomainObj *vm, static int qemuProcessRecoverMigrationIn(virQEMUDriver *driver, virDomainObj *vm, - qemuDomainJobObj *job, + virDomainJobObj *job, virDomainState state) { VIR_DEBUG("Active incoming migration in phase %s", @@ -3567,7 +3567,7 @@ qemuProcessRecoverMigrationIn(virQEMUDriver *driver, static int qemuProcessRecoverMigrationOut(virQEMUDriver *driver, virDomainObj *vm, - qemuDomainJobObj *job, + virDomainJobObj *job, virDomainJobStatus migStatus, virDomainState state, int reason, @@ -3673,7 +3673,7 @@ qemuProcessRecoverMigrationOut(virQEMUDriver *driver, static int qemuProcessRecoverMigration(virQEMUDriver *driver, virDomainObj *vm, - qemuDomainJobObj *job, + virDomainJobObj *job, unsigned int *stopFlags) { virDomainJobStatus migStatus = VIR_DOMAIN_JOB_STATUS_NONE; @@ -3735,7 +3735,7 @@ qemuProcessRecoverMigration(virQEMUDriver *driver, static int qemuProcessRecoverJob(virQEMUDriver *driver, virDomainObj *vm, - qemuDomainJobObj *job, + virDomainJobObj *job, unsigned int *stopFlags) { qemuDomainObjPrivate *priv = vm->privateData; @@ -8866,7 +8866,7 @@ qemuProcessReconnect(void *opaque) virQEMUDriver *driver = data->driver; virDomainObj *obj = data->obj; qemuDomainObjPrivate *priv; - g_auto(qemuDomainJobObj) oldjob = { + g_auto(virDomainJobObj) oldjob = { .cb = NULL, }; int state; -- 2.35.3

This patch alters members of virDomainObjPrivateJobCallbacks to make the code more consistent. Signed-off-by: Kristina Hanicova <khanicov@redhat.com> --- src/hypervisor/domain_job.h | 4 ++-- src/qemu/qemu_domain.c | 4 ++-- src/qemu/qemu_domainjob.c | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/hypervisor/domain_job.h b/src/hypervisor/domain_job.h index c56c22e63c..7d9c715957 100644 --- a/src/hypervisor/domain_job.h +++ b/src/hypervisor/domain_job.h @@ -198,6 +198,6 @@ struct _virDomainObjPrivateJobCallbacks { virDomainObjPrivateJobAlloc allocJobPrivate; virDomainObjPrivateJobFree freeJobPrivate; virDomainObjPrivateJobReset resetJobPrivate; - virDomainObjPrivateJobFormat formatJob; - virDomainObjPrivateJobParse parseJob; + virDomainObjPrivateJobFormat formatJobPrivate; + virDomainObjPrivateJobParse parseJobPrivate; }; diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c index a643dd03af..2d7f6d761d 100644 --- a/src/qemu/qemu_domain.c +++ b/src/qemu/qemu_domain.c @@ -364,8 +364,8 @@ static virDomainObjPrivateJobCallbacks qemuPrivateJobCallbacks = { .allocJobPrivate = qemuJobAllocPrivate, .freeJobPrivate = qemuJobFreePrivate, .resetJobPrivate = qemuJobResetPrivate, - .formatJob = qemuDomainFormatJobPrivate, - .parseJob = qemuDomainParseJobPrivate, + .formatJobPrivate = qemuDomainFormatJobPrivate, + .parseJobPrivate = qemuDomainParseJobPrivate, }; /** diff --git a/src/qemu/qemu_domainjob.c b/src/qemu/qemu_domainjob.c index 05480239b1..b4082a12e3 100644 --- a/src/qemu/qemu_domainjob.c +++ b/src/qemu/qemu_domainjob.c @@ -1294,7 +1294,7 @@ qemuDomainObjPrivateXMLFormatJob(virBuffer *buf, } if (priv->job.cb && - priv->job.cb->formatJob(&childBuf, &priv->job, vm) < 0) + priv->job.cb->formatJobPrivate(&childBuf, &priv->job, vm) < 0) return -1; virXMLFormatElement(buf, "job", &attrBuf, &childBuf); @@ -1362,7 +1362,7 @@ qemuDomainObjPrivateXMLParseJob(virDomainObj *vm, } if (priv->job.cb && - priv->job.cb->parseJob(ctxt, job, vm) < 0) + priv->job.cb->parseJobPrivate(ctxt, job, vm) < 0) return -1; return 0; -- 2.35.3

This patch replaces struct virLXCDomainJobObj with generalized virDomainJobObj. Signed-off-by: Kristina Hanicova <khanicov@redhat.com> --- src/lxc/lxc_domain.c | 4 ++-- src/lxc/lxc_domain.h | 9 +-------- 2 files changed, 3 insertions(+), 10 deletions(-) diff --git a/src/lxc/lxc_domain.c b/src/lxc/lxc_domain.c index 4c7265e40c..16b667de95 100644 --- a/src/lxc/lxc_domain.c +++ b/src/lxc/lxc_domain.c @@ -49,7 +49,7 @@ virLXCDomainObjInitJob(virLXCDomainObjPrivate *priv) static void virLXCDomainObjResetJob(virLXCDomainObjPrivate *priv) { - struct virLXCDomainJobObj *job = &priv->job; + virDomainJobObj *job = &priv->job; job->active = VIR_JOB_NONE; job->owner = 0; @@ -103,7 +103,7 @@ virLXCDomainObjBeginJob(virLXCDriver *driver G_GNUC_UNUSED, error: VIR_WARN("Cannot start job (%s) for domain %s;" - " current job is (%s) owned by (%d)", + " current job is (%s) owned by (%llu)", virDomainJobTypeToString(job), obj->def->name, virDomainJobTypeToString(priv->job.active), diff --git a/src/lxc/lxc_domain.h b/src/lxc/lxc_domain.h index d91dcca04b..82c36eb940 100644 --- a/src/lxc/lxc_domain.h +++ b/src/lxc/lxc_domain.h @@ -54,13 +54,6 @@ struct _lxcDomainDef { }; -struct virLXCDomainJobObj { - virCond cond; /* Use to coordinate jobs */ - virDomainJob active; /* Currently running job */ - int owner; /* Thread which set current job */ -}; - - typedef struct _virLXCDomainObjPrivate virLXCDomainObjPrivate; struct _virLXCDomainObjPrivate { virLXCDriver *driver; @@ -74,7 +67,7 @@ struct _virLXCDomainObjPrivate { virCgroup *cgroup; char *machineName; - struct virLXCDomainJobObj job; + virDomainJobObj job; }; extern virXMLNamespace virLXCDriverDomainXMLNamespace; -- 2.35.3

This patch replaces struct libxlDomainJobObj with generalized virDomainJobObj. Signed-off-by: Kristina Hanicova <khanicov@redhat.com> --- src/libxl/libxl_domain.c | 6 +++--- src/libxl/libxl_domain.h | 11 ++--------- 2 files changed, 5 insertions(+), 12 deletions(-) diff --git a/src/libxl/libxl_domain.c b/src/libxl/libxl_domain.c index 49577d6328..ce515ec54e 100644 --- a/src/libxl/libxl_domain.c +++ b/src/libxl/libxl_domain.c @@ -60,7 +60,7 @@ libxlDomainObjInitJob(libxlDomainObjPrivate *priv) static void libxlDomainObjResetJob(libxlDomainObjPrivate *priv) { - struct libxlDomainJobObj *job = &priv->job; + virDomainJobObj *job = &priv->job; job->active = VIR_JOB_NONE; job->owner = 0; @@ -117,7 +117,7 @@ libxlDomainObjBeginJob(libxlDriverPrivate *driver G_GNUC_UNUSED, error: VIR_WARN("Cannot start job (%s) for domain %s;" - " current job is (%s) owned by (%d)", + " current job is (%s) owned by (%llu)", virDomainJobTypeToString(job), obj->def->name, virDomainJobTypeToString(priv->job.active), @@ -158,7 +158,7 @@ libxlDomainObjEndJob(libxlDriverPrivate *driver G_GNUC_UNUSED, } int -libxlDomainJobUpdateTime(struct libxlDomainJobObj *job) +libxlDomainJobUpdateTime(virDomainJobObj *job) { virDomainJobData *jobData = job->current; unsigned long long now; diff --git a/src/libxl/libxl_domain.h b/src/libxl/libxl_domain.h index 5ce4d518a9..5843a4921f 100644 --- a/src/libxl/libxl_domain.h +++ b/src/libxl/libxl_domain.h @@ -27,13 +27,6 @@ #include "domain_job.h" -struct libxlDomainJobObj { - virCond cond; /* Use to coordinate jobs */ - virDomainJob active; /* Currently running job */ - int owner; /* Thread which set current job */ - virDomainJobData *current; /* Statistics for the current job */ -}; - typedef struct _libxlDomainObjPrivate libxlDomainObjPrivate; struct _libxlDomainObjPrivate { /* console */ @@ -44,7 +37,7 @@ struct _libxlDomainObjPrivate { char *lockState; bool lockProcessRunning; - struct libxlDomainJobObj job; + virDomainJobObj job; bool hookRun; /* true if there was a hook run over this domain */ }; @@ -69,7 +62,7 @@ libxlDomainObjEndJob(libxlDriverPrivate *driver, virDomainObj *obj); int -libxlDomainJobUpdateTime(struct libxlDomainJobObj *job) +libxlDomainJobUpdateTime(virDomainJobObj *job) G_GNUC_WARN_UNUSED_RESULT; char * -- 2.35.3

This patch replaces struct virCHDomainJobObj with generalized virDomainJobObj. Signed-off-by: Kristina Hanicova <khanicov@redhat.com> --- src/ch/ch_domain.c | 4 ++-- src/ch/ch_domain.h | 9 +-------- 2 files changed, 3 insertions(+), 10 deletions(-) diff --git a/src/ch/ch_domain.c b/src/ch/ch_domain.c index 62a6f7a9d6..2afb3582b1 100644 --- a/src/ch/ch_domain.c +++ b/src/ch/ch_domain.c @@ -46,7 +46,7 @@ virCHDomainObjInitJob(virCHDomainObjPrivate *priv) static void virCHDomainObjResetJob(virCHDomainObjPrivate *priv) { - struct virCHDomainJobObj *job = &priv->job; + virDomainJobObj *job = &priv->job; job->active = VIR_JOB_NONE; job->owner = 0; @@ -83,7 +83,7 @@ virCHDomainObjBeginJob(virDomainObj *obj, virDomainJob job) virDomainJobTypeToString(job)); if (virCondWaitUntil(&priv->job.cond, &obj->parent.lock, then) < 0) { VIR_WARN("Cannot start job (%s) for domain %s;" - " current job is (%s) owned by (%d)", + " current job is (%s) owned by (%llu)", virDomainJobTypeToString(job), obj->def->name, virDomainJobTypeToString(priv->job.active), diff --git a/src/ch/ch_domain.h b/src/ch/ch_domain.h index f75a08ec87..b3bebd6b9a 100644 --- a/src/ch/ch_domain.h +++ b/src/ch/ch_domain.h @@ -30,16 +30,9 @@ #define CH_JOB_WAIT_TIME (1000ull * 30) -struct virCHDomainJobObj { - virCond cond; /* Use to coordinate jobs */ - virDomainJob active; /* Currently running job */ - int owner; /* Thread which set current job */ -}; - - typedef struct _virCHDomainObjPrivate virCHDomainObjPrivate; struct _virCHDomainObjPrivate { - struct virCHDomainJobObj job; + virDomainJobObj job; virChrdevs *chrdevs; virCHDriver *driver; -- 2.35.3

On 7/19/22 15:48, Kristina Hanicova wrote:
This series moves generalized qemu job object into hypervisor/ and replaces all other hypervisor-specific job objects.
Kristina Hanicova (5): qemu & hypervisor: move job object into hypervisor hypervisor: domain_job: rename members in virDomainObjPrivateJobCallbacks LXC: use virDomainJobObj libxl: use virDomainJobObj CH: use virDomainJobObj
src/ch/ch_domain.c | 4 +- src/ch/ch_domain.h | 9 +---- src/hypervisor/domain_job.h | 62 ++++++++++++++++++++++++++++++ src/libxl/libxl_domain.c | 6 +-- src/libxl/libxl_domain.h | 11 +----- src/lxc/lxc_domain.c | 4 +- src/lxc/lxc_domain.h | 9 +---- src/qemu/qemu_domain.c | 10 ++--- src/qemu/qemu_domain.h | 2 +- src/qemu/qemu_domainjob.c | 26 ++++++------- src/qemu/qemu_domainjob.h | 66 +++----------------------------- src/qemu/qemu_migration.c | 2 +- src/qemu/qemu_migration.h | 2 +- src/qemu/qemu_migration_params.c | 2 +- src/qemu/qemu_process.c | 12 +++--- 15 files changed, 106 insertions(+), 121 deletions(-)
Reviewed-by: Michal Privoznik <mprivozn@redhat.com> Michal
participants (2)
-
Kristina Hanicova
-
Michal Prívozník