[PATCH 01/17] qemu & hypervisor: move qemuDomainObjBeginJobInternal() into hyperisor

Ján Tomko jtomko at redhat.com
Wed Aug 31 15:42:41 UTC 2022


There is a 'hyperisor' typo in the commit summary.

Since the whole file is moved anyway in patch 3/3, I suggest avoiding
the typo by moving "virdomainjob.c" first and then moving this function
into its final place.

On a Wednesday in 2022, Kristina Hanicova wrote:
>This patch moves qemuDomainObjBeginJobInternal() as
>virDomainObjBeginJobInternal() into hypervisor in order to be
>used by other hypervisors in the following patches.
>
>Signed-off-by: Kristina Hanicova <khanicov at redhat.com>
>---
> po/POTFILES                 |   1 +
> src/hypervisor/domain_job.c | 250 +++++++++++++++++++++++++++++++
> src/hypervisor/domain_job.h |   8 +
> src/libvirt_private.syms    |   1 +
> src/qemu/qemu_domainjob.c   | 284 +++---------------------------------
> 5 files changed, 284 insertions(+), 260 deletions(-)
>
>diff --git a/po/POTFILES b/po/POTFILES
>index 9621efb0d3..e3a1824834 100644
>--- a/po/POTFILES
>+++ b/po/POTFILES
>@@ -90,6 +90,7 @@ src/hyperv/hyperv_util.c
> src/hyperv/hyperv_wmi.c
> src/hypervisor/domain_cgroup.c
> src/hypervisor/domain_driver.c
>+src/hypervisor/domain_job.c
> src/hypervisor/virclosecallbacks.c
> src/hypervisor/virhostdev.c
> src/interface/interface_backend_netcf.c
>diff --git a/src/hypervisor/domain_job.c b/src/hypervisor/domain_job.c
>index 77110d2a23..ef3bee0248 100644
>--- a/src/hypervisor/domain_job.c
>+++ b/src/hypervisor/domain_job.c
>@@ -10,6 +10,13 @@
>
> #include "domain_job.h"
> #include "viralloc.h"
>+#include "virthreadjob.h"
>+#include "virlog.h"
>+#include "virtime.h"
>+
>+#define VIR_FROM_THIS VIR_FROM_HYPERV

VIR_FROM_HYPERV is for the Hyper-V driver. The existence of a
src/hypervisor directory is an implementation detail of libvirt
and should not affect the error message codes.

Sadly, I think VIR_FROM_NONE is most appropriate here.

>+
>+VIR_LOG_INIT("hypervisor.domain_job");
>
>
> VIR_ENUM_IMPL(virDomainJob,
>@@ -247,3 +254,246 @@ virDomainObjCanSetJob(virDomainJobObj *job,
>             (newAgentJob == VIR_AGENT_JOB_NONE ||
>              job->agentActive == VIR_AGENT_JOB_NONE));
> }
>+
>+/* Give up waiting for mutex after 30 seconds */
>+#define VIR_JOB_WAIT_TIME (1000ull * 30)
>+
>+/**
>+ * virDomainObjBeginJobInternal:
>+ * @obj: virDomainObj = domain object
>+ * @jobObj: virDomainJobObj = domain job object
>+ * @job: virDomainJob to start
>+ * @agentJob: virDomainAgentJob to start
>+ * @asyncJob: virDomainAsyncJob to start
>+ * @nowait: don't wait trying to acquire @job
>+ *
>+ * Acquires job for a domain object which must be locked before
>+ * calling. If there's already a job running waits up to
>+ * VIR_JOB_WAIT_TIME after which the functions fails reporting
>+ * an error unless @nowait is set.
>+ *
>+ * If @nowait is true this function tries to acquire job and if
>+ * it fails, then it returns immediately without waiting. No
>+ * error is reported in this case.
>+ *
>+ * Returns: 0 on success,
>+ *         -2 if unable to start job because of timeout or
>+ *            maxQueuedJobs limit,
>+ *         -1 otherwise.
>+ */
>+int
>+virDomainObjBeginJobInternal(virDomainObj *obj,
>+                             virDomainJobObj *jobObj,
>+                             virDomainJob job,
>+                             virDomainAgentJob agentJob,
>+                             virDomainAsyncJob asyncJob,
>+                             bool nowait)
>+{

[...]

>+
>+    return 0;
>+
>+ error:
>+    ignore_value(virTimeMillisNow(&now));
>+    if (jobObj->active && jobObj->started)
>+        duration = now - jobObj->started;
>+    if (jobObj->agentActive && jobObj->agentStarted)
>+        agentDuration = now - jobObj->agentStarted;
>+    if (jobObj->asyncJob && jobObj->asyncStarted)
>+        asyncDuration = now - jobObj->asyncStarted;
>+
>+    VIR_WARN("Cannot start job (%s, %s, %s) for domain %s; "
>+             "current job is (%s, %s, %s) "

There was a mention of currentAPI here in the old function.

>+             "owned by (%llu %s, %llu %s, %llu %s (flags=0x%lx)) "
>+             "for (%llus, %llus, %llus)",
>+             virDomainJobTypeToString(job),

Jano
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 488 bytes
Desc: not available
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20220831/0fbce12e/attachment.sig>


More information about the libvir-list mailing list