]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
qemu: propagate virDomainJobObj into qemuDomainObjPreserveJob()
authorKristina Hanicova <khanicov@redhat.com>
Wed, 3 Aug 2022 12:43:14 +0000 (14:43 +0200)
committerMichal Privoznik <mprivozn@redhat.com>
Mon, 8 Aug 2022 10:19:29 +0000 (12:19 +0200)
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
src/qemu/qemu_domainjob.h
src/qemu/qemu_process.c

index 132f2a0025cc451b5ca5fa030db844db979e3b1e..260717aa88a94f7bced0c8cb15d82c380481758c 100644 (file)
@@ -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;
-
-    if (priv->job.cb &&
-        !(priv->job.privateData = priv->job.cb->allocJobPrivate()))
+    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 (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;
 }
 
index 36747154c63dec6abc476f9a7e51488a7b57b901..a0cd79c7052462c6d198d0d427c3e302938b2970 100644 (file)
@@ -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,
index c6d8f50901a229ca039d78a1b73b9db400b8200f..22c70b2ab4cde33c988c0ef8af2636d0611f82d5 100644 (file)
@@ -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)