On Fri, Feb 13, 2015 at 16:24:31 +0100, Michal Privoznik wrote:
So far the condition is not used, but will be. There are some
operations, where we actively wait for a block job to complete.
Instead of locking and unlocking the domain object, entering and
leaving monitor, lets just use a condition and let our monitor
event handling code wake up when needed.
Signed-off-by: Michal Privoznik <mprivozn(a)redhat.com>
---
src/qemu/qemu_domain.c | 4 +++-
src/qemu/qemu_domain.h | 2 ++
2 files changed, 5 insertions(+), 1 deletion(-)
diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c
index 99c46d4..28961d2 100644
--- a/src/qemu/qemu_domain.c
+++ b/src/qemu/qemu_domain.c
@@ -406,7 +406,8 @@ qemuDomainObjPrivateAlloc(void)
goto error;
}
- if (virCondInit(&priv->unplugFinished) < 0)
+ if (virCondInit(&priv->unplugFinished) < 0 ||
+ virCondInit(&priv->blockJob) < 0)
goto error;
if (!(priv->devs = virChrdevAlloc()))
@@ -439,6 +440,7 @@ qemuDomainObjPrivateFree(void *data)
VIR_FREE(priv->origname);
virCondDestroy(&priv->unplugFinished);
+ virCondDestroy(&priv->blockJob);
virChrdevFree(priv->devs);
/* This should never be non-NULL if we get here, but just in case... */
diff --git a/src/qemu/qemu_domain.h b/src/qemu/qemu_domain.h
index b2c3881..db9ffac 100644
--- a/src/qemu/qemu_domain.h
+++ b/src/qemu/qemu_domain.h
@@ -186,6 +186,8 @@ struct _qemuDomainObjPrivate {
const char *unpluggingDevice; /* alias of the device that is being unplugged */
char **qemuDevices; /* NULL-terminated list of devices aliases known to QEMU */
+ virCond blockJob; /* signals that one of disks translated state of a block job */
Wouldn't "signals whenever a block job changes its state" or something
similar be more readable?
+
bool hookRun; /* true if there was a hook run over this domain */
virBitmapPtr autoNodeset;
};
Jirka