[libvirt] [PATCH v2 02/22] qemu: Introduce qemuBlockJobUpdate
Jiri Denemark
jdenemar at redhat.com
Tue Jun 9 18:27:08 UTC 2015
On Tue, Jun 09, 2015 at 16:56:34 +0200, Peter Krempa wrote:
> On Tue, Jun 02, 2015 at 14:34:07 +0200, Jiri Denemark wrote:
> > The wrapper is useful for calling qemuBlockJobEventProcess with the
> > event details stored in disk's privateData, which is the most likely
> > usage of qemuBlockJobEventProcess.
> >
> > Signed-off-by: Jiri Denemark <jdenemar at redhat.com>
> > ---
> >
> > Notes:
> > Already ACKed in version 1.
> >
> > Version 2:
> > - no changes
> >
> > src/libvirt_private.syms | 2 ++
> > src/qemu/qemu_blockjob.c | 37 +++++++++++++++++++++++++++++--------
> > src/qemu/qemu_blockjob.h | 3 +++
> > 3 files changed, 34 insertions(+), 8 deletions(-)
> >
> > diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms
> > index 9076135..8846dea 100644
> > --- a/src/libvirt_private.syms
> > +++ b/src/libvirt_private.syms
> > @@ -265,6 +265,8 @@ virDomainDiskInsert;
> > virDomainDiskInsertPreAlloced;
> > virDomainDiskIoTypeFromString;
> > virDomainDiskIoTypeToString;
> > +virDomainDiskMirrorStateTypeFromString;
> > +virDomainDiskMirrorStateTypeToString;
> > virDomainDiskPathByName;
> > virDomainDiskRemove;
> > virDomainDiskRemoveByName;
> > diff --git a/src/qemu/qemu_blockjob.c b/src/qemu/qemu_blockjob.c
> > index 098a43a..605c2a5 100644
> > --- a/src/qemu/qemu_blockjob.c
> > +++ b/src/qemu/qemu_blockjob.c
> > @@ -38,6 +38,27 @@
> >
> > VIR_LOG_INIT("qemu.qemu_blockjob");
> >
> > +
> > +int
> > +qemuBlockJobUpdate(virQEMUDriverPtr driver,
> > + virDomainObjPtr vm,
> > + virDomainDiskDefPtr disk)
> > +{
> > + qemuDomainDiskPrivatePtr diskPriv = QEMU_DOMAIN_DISK_PRIVATE(disk);
> > + int ret;
> > +
> > + if ((ret = diskPriv->blockJobStatus) == -1)
> > + return -1;
> > +
> > + qemuBlockJobEventProcess(driver, vm, disk,
> > + diskPriv->blockJobType,
> > + diskPriv->blockJobStatus);
> > + diskPriv->blockJobStatus = -1;
> > +
> > + return ret;
> > +}
>
> While reading this function the second time I realized that the control
> flow looks weird.
>
> How about:
>
>
> int
> qemuBlockJobUpdate(virQEMUDriverPtr driver,
> virDomainObjPtr vm,
> virDomainDiskDefPtr disk)
> {
> qemuDomainDiskPrivatePtr diskPriv = QEMU_DOMAIN_DISK_PRIVATE(disk);
> int ret = diskPriv->blockJobStatus;
>
> if (diskPriv->blockJobStatus != -1) {
> qemuBlockJobEventProcess(driver, vm, disk,
> diskPriv->blockJobType,
> diskPriv->blockJobStatus);
> diskPriv->blockJobStatus = -1;
> }
>
> return ret;
> }
Yeah, although I will also rename "ret" to "status" since the name
implicitly suggests semantics of -1... anyone seeing ret = -1 would
consider it a failure. But this function does not fail, it just returns
the original value stored in blockJobStatus.
Jirka
More information about the libvir-list
mailing list