[PATCH 05/25] qemu: domain: Add global table of blockjobs

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Block jobs currently belong to disks only so we can look up the block
job data for them in the corresponding disks. This won't be the case
when using blockdev as certain jobs don't even correspond to a disk and
most of them can run on a part of the backing chain.

Add a global table of blockjobs which can be used to look up the data
for the blockjobs when the job events need to be processed.

The table is a hash table organized by job name and has a reference to
the job. New and running jobs will later be added to this table.
Reference counting will allow to reap job state for synchronous callers.

Signed-off-by: Peter Krempa <pkrempa@xxxxxxxxxx>
---
 src/qemu/qemu_domain.c | 7 +++++++
 src/qemu/qemu_domain.h | 3 +++
 2 files changed, 10 insertions(+)

diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c
index 073c9744d3..5af8f3b30c 100644
--- a/src/qemu/qemu_domain.c
+++ b/src/qemu/qemu_domain.c
@@ -1982,6 +1982,9 @@ qemuDomainObjPrivateAlloc(void *opaque)
     if (!(priv->devs = virChrdevAlloc()))
         goto error;

+    if (!(priv->blockjobs = virHashCreate(5, virObjectFreeHashData)))
+        goto error;
+
     priv->migMaxBandwidth = QEMU_DOMAIN_MIG_BANDWIDTH_MAX;
     priv->driver = opaque;

@@ -2051,6 +2054,8 @@ qemuDomainObjPrivateDataClear(qemuDomainObjPrivatePtr priv)

     qemuDomainObjResetJob(priv);
     qemuDomainObjResetAsyncJob(priv);
+
+    virHashRemoveAll(priv->blockjobs);
 }


@@ -2082,6 +2087,8 @@ qemuDomainObjPrivateFree(void *data)
     qemuDomainSecretInfoFree(&priv->migSecinfo);
     qemuDomainMasterKeyFree(priv);

+    virHashFree(priv->blockjobs);
+
     VIR_FREE(priv);
 }

diff --git a/src/qemu/qemu_domain.h b/src/qemu/qemu_domain.h
index 12882d5b91..b42b205398 100644
--- a/src/qemu/qemu_domain.h
+++ b/src/qemu/qemu_domain.h
@@ -389,6 +389,9 @@ struct _qemuDomainObjPrivate {

     /* true if global -mem-prealloc appears on cmd line */
     bool memPrealloc;
+
+    /* running block jobs */
+    virHashTablePtr blockjobs;
 };

 #define QEMU_DOMAIN_PRIVATE(vm) \
-- 
2.21.0

--
libvir-list mailing list
libvir-list@xxxxxxxxxx
https://www.redhat.com/mailman/listinfo/libvir-list



[Index of Archives]     [Virt Tools]     [Libvirt Users]     [Lib OS Info]     [Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [KDE Users]     [Fedora Tools]

  Powered by Linux