]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
hypervisor: domain_job: add JobData private callbacks into virDomainJobObj
authorKristina Hanicova <khanicov@redhat.com>
Wed, 10 Aug 2022 12:57:04 +0000 (14:57 +0200)
committerJán Tomko <jtomko@redhat.com>
Wed, 10 Aug 2022 14:50:07 +0000 (16:50 +0200)
We need this callback structure for qemu driver only, but it
makes more sense to include it in the virDomainJobObj in case of
other future additions than as a parameter of a beginJob
functions.

Signed-off-by: Kristina Hanicova <khanicov@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
Signed-off-by: Ján Tomko <jtomko@redhat.com>
src/ch/ch_domain.c
src/hypervisor/domain_job.c
src/hypervisor/domain_job.h
src/libxl/libxl_domain.c
src/lxc/lxc_domain.c
src/qemu/qemu_domain.c
src/qemu/qemu_domainjob.c

index 817b1176d57dd3c816a5e401e77e954798c3247e..89b494b388c8d3db7664592bfa1a2aacc0c0ac90 100644 (file)
@@ -117,7 +117,7 @@ virCHDomainObjPrivateAlloc(void *opaque)
 
     priv = g_new0(virCHDomainObjPrivate, 1);
 
-    if (virDomainObjInitJob(&priv->job, NULL) < 0) {
+    if (virDomainObjInitJob(&priv->job, NULL, NULL) < 0) {
         g_free(priv);
         return NULL;
     }
index 0afed4641807b23fa279b8f591a03f6650f132e1..77110d2a234f236bc924f0e251d17d8a69ce8232 100644 (file)
@@ -116,10 +116,12 @@ virDomainJobStatusToType(virDomainJobStatus status)
 
 int
 virDomainObjInitJob(virDomainJobObj *job,
-                    virDomainObjPrivateJobCallbacks *cb)
+                    virDomainObjPrivateJobCallbacks *cb,
+                    virDomainJobDataPrivateDataCallbacks *jobDataPrivateCb)
 {
     memset(job, 0, sizeof(*job));
     job->cb = cb;
+    job->jobDataPrivateCb = jobDataPrivateCb;
 
     if (virCondInit(&job->cond) < 0)
         return -1;
index 7f35d5ee85c4cf053b21cae3070e001b281ce018..334b59c46546d8d7006ed67a4196d6c892fd7c46 100644 (file)
@@ -185,6 +185,8 @@ struct _virDomainJobObj {
 
     void *privateData;                  /* job specific collection of data */
     virDomainObjPrivateJobCallbacks *cb;
+    virDomainJobDataPrivateDataCallbacks *jobDataPrivateCb; /* callbacks for privateData of
+                                                               virDomainJobData, can be NULL */
 };
 
 
@@ -210,7 +212,8 @@ struct _virDomainObjPrivateJobCallbacks {
 
 
 int virDomainObjInitJob(virDomainJobObj *job,
-                        virDomainObjPrivateJobCallbacks *cb);
+                        virDomainObjPrivateJobCallbacks *cb,
+                        virDomainJobDataPrivateDataCallbacks *jobDataPrivateCb);
 
 void virDomainObjResetJob(virDomainJobObj *job);
 
index 9a2359851294557dcf6efa491601a8e53c8f3f71..52e0aa1e601bb0a8f852f9ae3400fcb40cb7add7 100644 (file)
@@ -161,7 +161,7 @@ libxlDomainObjPrivateAlloc(void *opaque G_GNUC_UNUSED)
         return NULL;
     }
 
-    if (virDomainObjInitJob(&priv->job, NULL) < 0) {
+    if (virDomainObjInitJob(&priv->job, NULL, NULL) < 0) {
         virChrdevFree(priv->devs);
         g_free(priv);
         return NULL;
index 654c35c6402c9497d81959aee62fa5a02ff82842..61e59ec726a202902ded28b497fa849a0c27364a 100644 (file)
@@ -120,7 +120,7 @@ virLXCDomainObjPrivateAlloc(void *opaque)
 {
     virLXCDomainObjPrivate *priv = g_new0(virLXCDomainObjPrivate, 1);
 
-    if (virDomainObjInitJob(&priv->job, NULL) < 0) {
+    if (virDomainObjInitJob(&priv->job, NULL, NULL) < 0) {
         g_free(priv);
         return NULL;
     }
index 93fd11a3c9d22a5602a564bfed95d1d0f4ccffbe..abd76dbd662417ec808d15ba734e1c57e9c7e95d 100644 (file)
@@ -1760,7 +1760,8 @@ qemuDomainObjPrivateAlloc(void *opaque)
     g_autoptr(qemuDomainObjPrivate) priv = g_new0(qemuDomainObjPrivate, 1);
     g_autoptr(virQEMUDriverConfig) cfg = virQEMUDriverGetConfig(opaque);
 
-    if (virDomainObjInitJob(&priv->job, &qemuPrivateJobCallbacks) < 0) {
+    if (virDomainObjInitJob(&priv->job, &qemuPrivateJobCallbacks,
+                            &qemuJobDataPrivateDataCallbacks) < 0) {
         virReportSystemError(errno, "%s",
                              _("Unable to init qemu driver mutexes"));
         return NULL;
index 1b85e3bb2d9a1facc4485192e1427064d7a07752..66a91a3e4f6b91fbca9130039a750ebd6d888fb7 100644 (file)
@@ -817,7 +817,7 @@ qemuDomainObjBeginJobInternal(virDomainObj *obj,
                       virDomainAsyncJobTypeToString(asyncJob),
                       obj, obj->def->name);
             virDomainObjResetAsyncJob(&priv->job);
-            priv->job.current = virDomainJobDataInit(&qemuJobDataPrivateDataCallbacks);
+            priv->job.current = virDomainJobDataInit(priv->job.jobDataPrivateCb);
             priv->job.current->status = VIR_DOMAIN_JOB_STATUS_ACTIVE;
             priv->job.asyncJob = asyncJob;
             priv->job.asyncOwner = virThreadSelfID();