From 4df82dbbd17619f413771fc5ff5249cf4fe361c5 Mon Sep 17 00:00:00 2001 From: Kristina Hanicova <khanicov@redhat.com> Date: Wed, 3 Aug 2022 14:43:14 +0200 Subject: [PATCH] qemu: propagate virDomainJobObj into qemuDomainObjPreserveJob() It does not make sense to propagate virDomainObj and get qemuDomainObjPrivate from it, when it is already accessible in the only function qemuDomainObjPreserveJob() is called from. That being said, we can also propagate virDomainJobObj directly and avoid using qemu private structure. Signed-off-by: Kristina Hanicova <khanicov@redhat.com> Reviewed-by: Michal Privoznik <mprivozn@redhat.com> --- src/qemu/qemu_domainjob.c | 29 +++++++++++++---------------- src/qemu/qemu_domainjob.h | 2 +- src/qemu/qemu_process.c | 2 +- 3 files changed, 15 insertions(+), 18 deletions(-) diff --git a/src/qemu/qemu_domainjob.c b/src/qemu/qemu_domainjob.c index 132f2a0025..260717aa88 100644 --- a/src/qemu/qemu_domainjob.c +++ b/src/qemu/qemu_domainjob.c @@ -160,28 +160,25 @@ qemuDomainEventEmitJobCompleted(virQEMUDriver *driver, * Returns 0 on success, -1 on failure. */ int -qemuDomainObjPreserveJob(virDomainObj *obj, +qemuDomainObjPreserveJob(virDomainJobObj *currJob, virDomainJobObj *job) { - qemuDomainObjPrivate *priv = obj->privateData; - memset(job, 0, sizeof(*job)); - job->active = priv->job.active; - job->owner = priv->job.owner; - job->asyncJob = priv->job.asyncJob; - job->asyncOwner = priv->job.asyncOwner; - job->asyncStarted = priv->job.asyncStarted; - job->phase = priv->job.phase; - job->privateData = g_steal_pointer(&priv->job.privateData); - job->apiFlags = priv->job.apiFlags; + job->active = currJob->active; + job->owner = currJob->owner; + job->asyncJob = currJob->asyncJob; + job->asyncOwner = currJob->asyncOwner; + job->phase = currJob->phase; + job->privateData = g_steal_pointer(&currJob->privateData); + job->apiFlags = currJob->apiFlags; - if (priv->job.cb && - !(priv->job.privateData = priv->job.cb->allocJobPrivate())) + if (currJob->cb && + !(currJob->privateData = currJob->cb->allocJobPrivate())) return -1; - job->cb = priv->job.cb; + job->cb = currJob->cb; - virDomainObjResetJob(&priv->job); - virDomainObjResetAsyncJob(&priv->job); + virDomainObjResetJob(currJob); + virDomainObjResetAsyncJob(currJob); return 0; } diff --git a/src/qemu/qemu_domainjob.h b/src/qemu/qemu_domainjob.h index 36747154c6..a0cd79c705 100644 --- a/src/qemu/qemu_domainjob.h +++ b/src/qemu/qemu_domainjob.h @@ -105,7 +105,7 @@ qemuDomainObjStartJobPhase(virDomainObj *obj, int phase); void qemuDomainObjSetAsyncJobMask(virDomainObj *obj, unsigned long long allowedJobs); -int qemuDomainObjPreserveJob(virDomainObj *obj, +int qemuDomainObjPreserveJob(virDomainJobObj *currJob, virDomainJobObj *job); void qemuDomainObjRestoreAsyncJob(virDomainObj *vm, diff --git a/src/qemu/qemu_process.c b/src/qemu/qemu_process.c index c6d8f50901..22c70b2ab4 100644 --- a/src/qemu/qemu_process.c +++ b/src/qemu/qemu_process.c @@ -8879,7 +8879,7 @@ qemuProcessReconnect(void *opaque) cfg = virQEMUDriverGetConfig(driver); priv = obj->privateData; - qemuDomainObjPreserveJob(obj, &oldjob); + qemuDomainObjPreserveJob(&priv->job, &oldjob); if (oldjob.asyncJob == VIR_ASYNC_JOB_MIGRATION_IN) stopFlags |= VIR_QEMU_PROCESS_STOP_MIGRATED; if (oldjob.asyncJob == VIR_ASYNC_JOB_BACKUP && priv->backup)