qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH v1 RFC 25/34] io: add QIOTask class for async op


From: Daniel P. Berrange
Subject: Re: [Qemu-devel] [PATCH v1 RFC 25/34] io: add QIOTask class for async operations
Date: Fri, 17 Apr 2015 17:11:58 +0100
User-agent: Mutt/1.5.23 (2014-03-12)

On Fri, Apr 17, 2015 at 05:57:24PM +0200, Paolo Bonzini wrote:
> 
> 
> On 17/04/2015 17:49, Daniel P. Berrange wrote:
> > > In this case I even think you're leaking the task.  You do object_ref
> > > twice (once at creation time, once before qio_channel_add_watch_full)
> > > and only have one object_unref.  I would just do without reference
> > > counting, and add a qio_task_free() function that calls
> > > qio_task_finalize() and frees the QIOTask.
> > 
> > Are you referring to the qio_channel_tls_handshake() method in the
> > next patch ? If so it does actually have two object_unref calls
> > so shouldn't be leaking. In more complex scenarios I thnk the
> > ref counting ability will come in useful. Of course I could add
> > ref counting to a plain struct without using QOM, but it felt
> > better to just use QOM and be done with it, so people don't have
> > to remember which particular unref method they must use.
> 
> I cannot find the second... O:-)

I create & unref it in the same place:

+    task = qio_task_new(OBJECT(ioc),
+                        func, opaque, destroy);
+
+    qio_channel_tls_handshake_task(ioc, task);
+
+    object_unref(OBJECT(task));



The second ref taken at time of qio_channel_add_watch_full() gets released
by the GDestroyNotify that is passed to that method.

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 :|



reply via email to

[Prev in Thread] Current Thread [Next in Thread]