qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Paolo Bonzini <pbonzini@redhat.com>
To: Stefan Hajnoczi <stefanha@redhat.com>
Cc: Kevin Wolf <kwolf@redhat.com>, Fam Zheng <famz@redhat.com>,
	qemu-devel@nongnu.org, Michael Roth <mdroth@linux.vnet.ibm.com>
Subject: Re: [Qemu-devel] [PATCH v3 5/6] iothread: add "iothread" qdev property type
Date: Fri, 21 Feb 2014 12:33:38 +0100	[thread overview]
Message-ID: <53073992.70803@redhat.com> (raw)
In-Reply-To: <20140221110317.GC17890@stefanha-thinkpad.redhat.com>

Il 21/02/2014 12:03, Stefan Hajnoczi ha scritto:
> On Thu, Feb 20, 2014 at 01:58:06PM +0100, Paolo Bonzini wrote:
>>> @@ -151,6 +152,8 @@ extern PropertyInfo qdev_prop_arraylen;
>>>     DEFINE_PROP(_n, _s, _f, qdev_prop_vlan, NICPeers)
>>> #define DEFINE_PROP_DRIVE(_n, _s, _f) \
>>>     DEFINE_PROP(_n, _s, _f, qdev_prop_drive, BlockDriverState *)
>>> +#define DEFINE_PROP_IOTHREAD(_n, _s, _f)             \
>>> +    DEFINE_PROP(_n, _s, _f, qdev_prop_iothread, IOThread *)
>>> #define DEFINE_PROP_MACADDR(_n, _s, _f)         \
>>>     DEFINE_PROP(_n, _s, _f, qdev_prop_macaddr, MACAddr)
>>> #define DEFINE_PROP_LOSTTICKPOLICY(_n, _s, _f, _d) \
>>>
>>
>> Should become a link sooner rather than later, but I'm not holding
>> the series for this.
>
> I don't mind doing the work but I don't quite understand it:

I won't claim I understand it 100% either, in fact it is why I don't 
think it should block the series.  But we have actual link users and 
thus actual bugs, which we should fix.

> Links are a special QOM property type: a unidirectional relationship
> where the property holds the path and a reference to another object.
>
> I don't understand how the link's reference is released since
> object_property_add_link() internally doesn't pass a release() function
> pointer to object_property_add().  I also don't see callers explicitly
> calling object_unref() on their link pointer.  Any ideas?

Bug, I guess.

> I'm concerned that existing object_property_add_link() users are
> assigning the link pointer without incrementing the reference count like
> object_set_link_property() would.  That sounds like a recipe for
> disaster if someone uses qom-set or equivalent.

This is okay; object_property_add_link reference count takes ownership 
of the original value of the pointer.

The real disaster is that links cannot be "locked" at realize time.  For 
this to happen, links need to have a setter like object_property_add_str 
(not sure if they need a getter).

> The rng device examples don't seem to help because there is no way to
> specify the rng backend via a qdev property (we always create a default
> backend).  I need to be able to specify the object via a qdev property
> to the virtio-blk-pci device.

You can do that, see virtio-rng-pci.  It creates a link and forwards 
that to virtio-rng.

> Do I need to define a link<> qdev property:
> DEFINE_PROP_LINK("iothread", _state, _field.iothread, TYPE_IOTHREAD, IOThread *)

Perhaps, but to do that we need to first fix object_property_add_link.

Paolo

  reply	other threads:[~2014-02-21 11:33 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-02-20 12:50 [Qemu-devel] [PATCH v3 0/6] dataplane: switch to N:M devices-per-thread model Stefan Hajnoczi
2014-02-20 12:50 ` [Qemu-devel] [PATCH v3 1/6] rfifolock: add recursive FIFO lock Stefan Hajnoczi
2014-02-20 12:50 ` [Qemu-devel] [PATCH v3 2/6] aio: add aio_context_acquire() and aio_context_release() Stefan Hajnoczi
2014-02-20 12:50 ` [Qemu-devel] [PATCH v3 3/6] iothread: add I/O thread object Stefan Hajnoczi
2014-02-20 12:50 ` [Qemu-devel] [PATCH v3 4/6] qdev: add get_pointer_and_free() for temporary strings Stefan Hajnoczi
2014-02-20 12:50 ` [Qemu-devel] [PATCH v3 5/6] iothread: add "iothread" qdev property type Stefan Hajnoczi
2014-02-20 12:58   ` Paolo Bonzini
2014-02-21 11:03     ` Stefan Hajnoczi
2014-02-21 11:33       ` Paolo Bonzini [this message]
2014-02-21 12:45         ` Stefan Hajnoczi
2014-02-21 13:01           ` Paolo Bonzini
2014-02-21 13:25             ` Stefan Hajnoczi
2014-02-21 13:29               ` Paolo Bonzini
2014-02-21 14:15                 ` Stefan Hajnoczi
2014-02-20 12:50 ` [Qemu-devel] [PATCH v3 6/6] dataplane: replace internal thread with IOThread Stefan Hajnoczi
2014-02-20 12:57   ` Paolo Bonzini

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=53073992.70803@redhat.com \
    --to=pbonzini@redhat.com \
    --cc=famz@redhat.com \
    --cc=kwolf@redhat.com \
    --cc=mdroth@linux.vnet.ibm.com \
    --cc=qemu-devel@nongnu.org \
    --cc=stefanha@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).