[libvirt] [PATCH 2/8] Return count of callbacks when registering callbacks

Eric Blake eblake at redhat.com
Wed Dec 14 18:58:57 UTC 2011


On 12/13/2011 05:38 PM, Daniel P. Berrange wrote:
> From: "Daniel P. Berrange" <berrange at redhat.com>
> 
> When registering a callback for a particular event some callers
> need to know how many callbacks already exist for that event.
> While it is possible to ask for a count, this is not free from
> race conditions when threaded. Thus the API for registering
> callbacks should return the count of callbacks
> 

I think this needs to swap places with the previous patch, and pick up
the hunks that I questioned there.

> * src/conf/domain_event.c, src/conf/domain_event.h,
>   src/libvirt_private.syms: Return count of callbacks when
>   registering callbacks
> * src/libxl/libxl_driver.c, src/libxl/libxl_driver.c,
>   src/qemu/qemu_driver.c, src/remote/remote_driver.c,
>   src/remote/remote_driver.c, src/uml/uml_driver.c,
>   src/vbox/vbox_tmpl.c, src/xen/xen_driver.c: Update
>   for change in APIs

The changes themselves make sense.  I had a minor merge conflict with my
own resolution to the compile errors left over in 1/8 and this patch,
due to an indentation problem.

> ---
>  src/conf/domain_event.c    |   23 ++++++++++++++++++-----
>  src/conf/domain_event.h    |    3 ++-
>  src/libvirt_private.syms   |    2 +-
>  src/libxl/libxl_driver.c   |   15 ++++++++-------
>  src/lxc/lxc_driver.c       |   15 ++++++++-------
>  src/qemu/qemu_driver.c     |   15 ++++++++-------
>  src/remote/remote_driver.c |   33 ++++++++++++++++-----------------
>  src/test/test_driver.c     |   15 ++++++++-------
>  src/uml/uml_driver.c       |   15 ++++++++-------
>  src/vbox/vbox_tmpl.c       |   15 ++++++++-------
>  src/xen/xen_driver.c       |   13 +++++++------
>  11 files changed, 92 insertions(+), 72 deletions(-)
> 

> +++ b/src/libxl/libxl_driver.c
> @@ -3851,10 +3851,11 @@ libxlDomainEventRegisterAny(virConnectPtr conn, virDomainPtr dom, int eventID,
>      int ret;
>  
>      libxlDriverLock(driver);
> -    ret = virDomainEventCallbackListAddID(conn,
> -                                          driver->domainEventState->callbacks,
> -                                          dom, eventID, callback, opaque,
> -                                          freecb);
> +    if (virDomainEventCallbackListAddID(conn,
> +                                        driver->domainEventState->callbacks,
> +                                        dom, eventID, callback, opaque,
> +                                        freecb, &ret) < 0)
> +        ret = -1;

Should we make virDomainEventCallbackListAddID guarantee that the
callbackID argument, if non-NULL, is set to -1 on failure?

> @@ -7312,7 +7313,7 @@ static int vboxDomainEventDeregisterAny(virConnectPtr conn,
>       */
>      vboxDriverLock(data);
>  
> -    cnt = virDomainEventStateDeregisterAny(conn, data->domainEvents,
> +    cnt = virDomainEventStateDeregisterID(conn, data->domainEvents,
>                                             callbackID);

Indentation.

ACK.

-- 
Eric Blake   eblake at redhat.com    +1-919-301-3266
Libvirt virtualization library http://libvirt.org

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 620 bytes
Desc: OpenPGP digital signature
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20111214/53398659/attachment-0001.sig>


More information about the libvir-list mailing list