This patch moves qemuDomainObjPreserveJob() as
virDomainObjPreserveJob() into hypervisor in order to be used by
other hypervisors as well.
Signed-off-by: Kristina Hanicova <khanicov(a)redhat.com>
---
src/hypervisor/domain_job.c | 32 ++++++++++++++++++++++++++++++++
src/hypervisor/domain_job.h | 3 +++
src/libvirt_private.syms | 1 +
src/qemu/qemu_domainjob.c | 33 ---------------------------------
src/qemu/qemu_domainjob.h | 2 --
src/qemu/qemu_process.c | 2 +-
6 files changed, 37 insertions(+), 36 deletions(-)
diff --git a/src/hypervisor/domain_job.c b/src/hypervisor/domain_job.c
index 1cd9b8d728..804a58047f 100644
--- a/src/hypervisor/domain_job.c
+++ b/src/hypervisor/domain_job.c
@@ -174,3 +174,35 @@ virDomainObjResetAsyncJob(virDomainJobObj *job)
if (job->cb)
job->cb->resetJobPrivate(job->privateData);
}
+
+/**
+ * virDomainObjPreserveJob
+ * @param currJob structure is a job that needs to be preserved
+ * @param job structure where to store job details from @currJob
+ *
+ * Saves the current job details from @currJob to @job and resets the job in @currJob.
+ *
+ * Returns 0 on success, -1 on failure.
+ */
+int
+virDomainObjPreserveJob(virDomainJobObj *currJob,
+ virDomainJobObj *job)
+{
+ memset(job, 0, sizeof(*job));
+ 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 = currJob->cb;
+
+ virDomainObjResetJob(currJob);
+ virDomainObjResetAsyncJob(currJob);
+ return 0;
+}
diff --git a/src/hypervisor/domain_job.h b/src/hypervisor/domain_job.h
index f857fccce2..44e4bfdb4a 100644
--- a/src/hypervisor/domain_job.h
+++ b/src/hypervisor/domain_job.h
@@ -214,3 +214,6 @@ void virDomainObjResetJob(virDomainJobObj *job);
void virDomainObjResetAgentJob(virDomainJobObj *job);
void virDomainObjResetAsyncJob(virDomainJobObj *job);
+
+int virDomainObjPreserveJob(virDomainJobObj *currJob,
+ virDomainJobObj *job);
diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms
index a8b9d5249f..edfa38c857 100644
--- a/src/libvirt_private.syms
+++ b/src/libvirt_private.syms
@@ -1591,6 +1591,7 @@ virDomainJobStatusToType;
virDomainJobTypeFromString;
virDomainJobTypeToString;
virDomainObjInitJob;
+virDomainObjPreserveJob;
virDomainObjResetAgentJob;
virDomainObjResetAsyncJob;
virDomainObjResetJob;
diff --git a/src/qemu/qemu_domainjob.c b/src/qemu/qemu_domainjob.c
index 260717aa88..4b8ba3f0bc 100644
--- a/src/qemu/qemu_domainjob.c
+++ b/src/qemu/qemu_domainjob.c
@@ -150,39 +150,6 @@ qemuDomainEventEmitJobCompleted(virQEMUDriver *driver,
}
-/**
- * qemuDomainObjPreserveJob
- * @param obj domain with a job that needs to be preserved
- * @param job structure where to store job details from @obj
- *
- * Saves the current job details from @obj to @job and resets the job in @obj.
- *
- * Returns 0 on success, -1 on failure.
- */
-int
-qemuDomainObjPreserveJob(virDomainJobObj *currJob,
- virDomainJobObj *job)
-{
- memset(job, 0, sizeof(*job));
- 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 = currJob->cb;
-
- virDomainObjResetJob(currJob);
- virDomainObjResetAsyncJob(currJob);
- return 0;
-}
-
-
void
qemuDomainObjRestoreAsyncJob(virDomainObj *vm,
virDomainAsyncJob asyncJob,
diff --git a/src/qemu/qemu_domainjob.h b/src/qemu/qemu_domainjob.h
index a0cd79c705..6272f9d845 100644
--- a/src/qemu/qemu_domainjob.h
+++ b/src/qemu/qemu_domainjob.h
@@ -105,8 +105,6 @@ qemuDomainObjStartJobPhase(virDomainObj *obj,
int phase);
void qemuDomainObjSetAsyncJobMask(virDomainObj *obj,
unsigned long long allowedJobs);
-int qemuDomainObjPreserveJob(virDomainJobObj *currJob,
- virDomainJobObj *job);
void
qemuDomainObjRestoreAsyncJob(virDomainObj *vm,
virDomainAsyncJob asyncJob,
diff --git a/src/qemu/qemu_process.c b/src/qemu/qemu_process.c
index fc42434a0d..2010c013a6 100644
--- a/src/qemu/qemu_process.c
+++ b/src/qemu/qemu_process.c
@@ -8874,7 +8874,7 @@ qemuProcessReconnect(void *opaque)
cfg = virQEMUDriverGetConfig(driver);
priv = obj->privateData;
- qemuDomainObjPreserveJob(&priv->job, &oldjob);
+ virDomainObjPreserveJob(&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)
--
2.37.1