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;
}
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;
}
return NULL;
}
- priv->job.current = virDomainJobDataInit(NULL);
-
return priv;
}
virDomainObj *obj);
int
-libxlDomainJobUpdateTime(virDomainJobObj *job)
- G_GNUC_WARN_UNUSED_RESULT;
+libxlDomainJobGetTimeElapsed(virDomainJobObj *job,
+ unsigned long long *timeElapsed);
char *
libxlDomainManagedSavePath(libxlDriverPrivate *driver,
libxlDomainObjPrivate *priv;
virDomainObj *vm;
int ret = -1;
+ unsigned long long timeElapsed = 0;
if (!(vm = libxlDomObjFromDomain(dom)))
goto cleanup;
/* 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:
{
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);
goto cleanup;
priv = vm->privateData;
- jobData = priv->job.current;
if (!priv->job.active) {
*type = VIR_DOMAIN_JOB_NONE;
*params = NULL;
/* 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: