[libvirt] [PATCH 4/8] Convert drivers to thread safe APIs for adding callbacks

Daniel P. Berrange berrange at redhat.com
Mon Dec 19 10:52:59 UTC 2011


On Wed, Dec 14, 2011 at 01:15:58PM -0700, Eric Blake wrote:
> On 12/13/2011 05:38 PM, Daniel P. Berrange wrote:
> > From: "Daniel P. Berrange" <berrange at redhat.com>
> > 
> > * src/libxl/libxl_driver.c, src/lxc/lxc_driver.c,
> >   src/qemu/qemu_driver.c, src/remote/remote_driver.c,
> >   src/test/test_driver.c, src/uml/uml_driver.c,
> >   src/vbox/vbox_tmpl.c, src/xen/xen_driver.c: Convert
> >   to threadsafe APIs
> > ---
> >  src/libxl/libxl_driver.c   |   18 ++++++------
> >  src/lxc/lxc_driver.c       |   18 ++++++------
> >  src/qemu/qemu_driver.c     |   18 ++++++------
> >  src/remote/remote_driver.c |   64 ++++++++++++++++++-------------------------
> >  src/test/test_driver.c     |   14 +++++-----
> >  src/uml/uml_driver.c       |   18 ++++++------
> >  src/vbox/vbox_tmpl.c       |   24 ++++++++--------
> >  src/xen/xen_driver.c       |   10 +++---
> >  8 files changed, 87 insertions(+), 97 deletions(-)
> 
> Safer and slightly smaller - a nice mix :)
> 
> > +++ b/src/remote/remote_driver.c
> > @@ -3124,13 +3124,8 @@ static int remoteDomainEventRegister(virConnectPtr conn,
> >  
> >      remoteDriverLock(priv);
> >  
> > -    if (priv->domainEventState->timer < 0) {
> > -         remoteError(VIR_ERR_NO_SUPPORT, "%s", _("no event support"));
> > -         goto done;
> > -    }
> 
> Does this hunk belong here, or in a later patch?

The next patch removes the contents of virDomainEventState from
public view, so this has to be removed now. A completely different
solution to the problem appears in a later patch, because instead
of registering a timer upfront when virDomainEventStatePtr is
allocated, we will register the timer at first use, so can report
the error directly, instead of having a delayed report as the old
code did.

> > +    if ((count = virDomainEventStateRegisterID(conn,
> > +                                               priv->domainEventState,
> > +                                               dom, eventID,
> > +                                               callback, opaque, freecb,
> > +                                               &callbackID)) < 0) {
> > +         remoteError(VIR_ERR_RPC, "%s", _("adding cb to list"));
> >           goto done;
> 
> Indentation is off here (9 instead of 8 spaces, on both instances of
> this error message).
> 
> ACK - the bulk of this patch is mechanical; and while I think you should
> rebase the remote_driver.c stuff slightly differently, at least this one
> compiled (unlike the rebase disaster on 1/8).

Regards,
Daniel
-- 
|: http://berrange.com      -o-    http://www.flickr.com/photos/dberrange/ :|
|: http://libvirt.org              -o-             http://virt-manager.org :|
|: http://autobuild.org       -o-         http://search.cpan.org/~danberr/ :|
|: http://entangle-photo.org       -o-       http://live.gnome.org/gtk-vnc :|




More information about the libvir-list mailing list