]> xenbits.xensource.com Git - libvirt.git/commitdiff
libxl: remove usage of virDomainJobData
authorKristina Hanicova <khanicov@redhat.com>
Mon, 5 Sep 2022 13:57:00 +0000 (15:57 +0200)
committerJán Tomko <jtomko@redhat.com>
Wed, 7 Sep 2022 10:06:17 +0000 (12:06 +0200)
Struct virDomainJobData is meant for statistics for async jobs.
It was used to keep track of only two attributes, one of which is
also in the generalized virDomainJobObj ("started") and one which
is always set to the same value, if any job is active
("jobType").

This patch removes usage & allocation of virDomainJobData
structure and rewrites libxlDomainJobUpdateTime() into more
suitable libxlDomainJobGetTimeElapsed().

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/libxl/libxl_domain.c
src/libxl/libxl_domain.h
src/libxl/libxl_driver.c

index 52e0aa1e601bb0a8f852f9ae3400fcb40cb7add7..6695ec670efd6a4edd120925d9a6f9d8c381a802 100644 (file)
@@ -81,8 +81,7 @@ libxlDomainObjBeginJob(libxlDriverPrivate *driver G_GNUC_UNUSED,
     VIR_DEBUG("Starting job: %s", virDomainJobTypeToString(job));
     priv->job.active = job;
     priv->job.owner = virThreadSelfID();
-    priv->job.current->started = now;
-    priv->job.current->jobType = VIR_DOMAIN_JOB_UNBOUNDED;
+    priv->job.started = now;
 
     return 0;
 
@@ -129,23 +128,22 @@ libxlDomainObjEndJob(libxlDriverPrivate *driver G_GNUC_UNUSED,
 }
 
 int
-libxlDomainJobUpdateTime(virDomainJobObj *job)
+libxlDomainJobGetTimeElapsed(virDomainJobObj *job, unsigned long long *timeElapsed)
 {
-    virDomainJobData *jobData = job->current;
     unsigned long long now;
 
-    if (!jobData->started)
+    if (!job->started)
         return 0;
 
     if (virTimeMillisNow(&now) < 0)
         return -1;
 
-    if (now < jobData->started) {
-        jobData->started = 0;
+    if (now < job->started) {
+        job->started = 0;
         return 0;
     }
 
-    jobData->timeElapsed = now - jobData->started;
+    *timeElapsed = now - job->started;
     return 0;
 }
 
@@ -167,8 +165,6 @@ libxlDomainObjPrivateAlloc(void *opaque G_GNUC_UNUSED)
         return NULL;
     }
 
-    priv->job.current = virDomainJobDataInit(NULL);
-
     return priv;
 }
 
index 5843a4921fa3f14a8358393c541d745c6e9e1a49..8ad56f1e88a633248687bb797ce9bbf118bd9571 100644 (file)
@@ -62,8 +62,8 @@ libxlDomainObjEndJob(libxlDriverPrivate *driver,
                      virDomainObj *obj);
 
 int
-libxlDomainJobUpdateTime(virDomainJobObj *job)
-    G_GNUC_WARN_UNUSED_RESULT;
+libxlDomainJobGetTimeElapsed(virDomainJobObj *job,
+                             unsigned long long *timeElapsed);
 
 char *
 libxlDomainManagedSavePath(libxlDriverPrivate *driver,
index f98003916549b00b41748baeb5d13bd62e5304ac..ff6c2f6506b8bdf44686bd6749922464db6ee952 100644 (file)
@@ -5207,6 +5207,7 @@ libxlDomainGetJobInfo(virDomainPtr dom,
     libxlDomainObjPrivate *priv;
     virDomainObj *vm;
     int ret = -1;
+    unsigned long long timeElapsed = 0;
 
     if (!(vm = libxlDomObjFromDomain(dom)))
         goto cleanup;
@@ -5225,14 +5226,14 @@ libxlDomainGetJobInfo(virDomainPtr dom,
     /* In libxl we don't have an estimated completion time
      * thus we always set to unbounded and update time
      * for the active job. */
-    if (libxlDomainJobUpdateTime(&priv->job) < 0)
+    if (libxlDomainJobGetTimeElapsed(&priv->job, &timeElapsed) < 0)
         goto cleanup;
 
     /* setting only these two attributes is enough because libxl never sets
      * anything else */
     memset(info, 0, sizeof(*info));
-    info->type = priv->job.current->jobType;
-    info->timeElapsed = priv->job.current->timeElapsed;
+    info->type = VIR_DOMAIN_JOB_UNBOUNDED;
+    info->timeElapsed = timeElapsed;
     ret = 0;
 
  cleanup:
@@ -5249,9 +5250,9 @@ libxlDomainGetJobStats(virDomainPtr dom,
 {
     libxlDomainObjPrivate *priv;
     virDomainObj *vm;
-    virDomainJobData *jobData;
     int ret = -1;
     int maxparams = 0;
+    unsigned long long timeElapsed = 0;
 
     /* VIR_DOMAIN_JOB_STATS_COMPLETED not supported yet */
     virCheckFlags(0, -1);
@@ -5263,7 +5264,6 @@ libxlDomainGetJobStats(virDomainPtr dom,
         goto cleanup;
 
     priv = vm->privateData;
-    jobData = priv->job.current;
     if (!priv->job.active) {
         *type = VIR_DOMAIN_JOB_NONE;
         *params = NULL;
@@ -5275,15 +5275,15 @@ libxlDomainGetJobStats(virDomainPtr dom,
     /* In libxl we don't have an estimated completion time
      * thus we always set to unbounded and update time
      * for the active job. */
-    if (libxlDomainJobUpdateTime(&priv->job) < 0)
+    if (libxlDomainJobGetTimeElapsed(&priv->job, &timeElapsed) < 0)
         goto cleanup;
 
     if (virTypedParamsAddULLong(params, nparams, &maxparams,
                                 VIR_DOMAIN_JOB_TIME_ELAPSED,
-                                jobData->timeElapsed) < 0)
+                                timeElapsed) < 0)
         goto cleanup;
 
-    *type = jobData->jobType;
+    *type = VIR_DOMAIN_JOB_UNBOUNDED;
     ret = 0;
 
  cleanup: