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@xxxxxxxxxx> > --- > 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 -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list