All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jason Wang <jasowang@redhat.com>
To: Eric Blake <eblake@redhat.com>
Cc: aliguori@us.ibm.com, mst@redhat.com, qemu-devel@nongnu.org,
	blauwirbel@gmail.com, shajnocz@redhat.com, krkumar2@in.ibm.com,
	kvm@vger.kernel.org, mprivozn@redhat.com, rusty@rustcorp.com.au,
	shiyer@redhat.com, jwhan@filewood.snu.ac.kr,
	gaowanlong@cn.fujitsu.com
Subject: Re: [Qemu-devel] [PATCH V4 00/22] Multiqueue virtio-net
Date: Thu, 31 Jan 2013 23:04:23 +0800	[thread overview]
Message-ID: <510A87F7.4050705@redhat.com> (raw)
In-Reply-To: <510A7551.9010304@redhat.com>

On 01/31/2013 09:44 PM, Eric Blake wrote:
> On 01/31/2013 12:00 AM, Jason Wang wrote:
>> On 01/31/2013 02:29 AM, Eric Blake wrote:
>>> On 01/30/2013 04:12 AM, Jason Wang wrote:
>>>
>>>> With this changes, user could start a multiqueue virtio-net device through
>>>>
>>>> ./qemu -netdev tap,id=hn0,queues=2,vhost=on -device virtio-net-pci,netdev=hn0
>>>>
>>>> Management tools such as libvirt can pass multiple pre-created fds/vhostfds through
>>>>
>>>> ./qemu -netdev tap,id=hn0,fds=X:Y,vhostfds=M:N -device virtio-net-pci,netdev=hn0
>>> Do we really need specific fds= parsing, or can we reuse the existing
>>> -add-fd command line option to our advantage?  I guess what I'm asking
>>> is how hotplug will work; and if hotplug takes a file name, shouldn't
>>> the command line also take a name; and if the command line takes a name,
>>> what's wrong with:
>>>
>>> ./qemu -add-fd fdset=1,fd=X -add-fd fdset=2,fd=Y -add-fd fdset=3,fd=M
>>> -add-fd fdset=4,fd=N -netdev
>>> tap,id=hn0,fds=/dev/fdset/1:/dev/fdset/2,vhostfds=/dev/fdset/3:/dev/fdset/4
>>> -device virtio-net-pci,netdev=hn0
>>>
>> AFAIK, tap does not support fdset now, so this requirement is beyond the
>> scope of multiqueue itself. We can do this in the future. Btw does
>> libvirt support add-fd now?
> Anything that uses qemu_open() supports fdset now.  The question I'm
> asking is whether the command line has a way to pass /path/to/name
> (which can be presented as /dev/fdset/nnn for add-fd usage) now, or
> whether it only supports fds=integers.

Nothing special with 'fds' and 'vhostfds', it just split the params by
':' and pass them one by one through monitor_handle_fd_param() just like
"fd" and "vhostfd". So if 'fd' and 'vhostfd' supports /path/to/name, so
do 'fds' and 'vhostfds'.

So for command line, you do can pass /path/to/name to fd/vhostfd but it
won't work since monitor_handle_fd_param() can not handle it because 1)
it's not an integer 2) it was not named before. But for hotplug,
non-integers works since it has already named by getfd, so does fds and
vhostfds.

For management such as libvirt, what's needed is just to connect the
fdname with ':'.

>> For hotplug, it just work if you pass multiple file descriptors one by
>> one through getfd and then use fds=X:Y,vhostfds=M:N.
> For hotplug, you can't pass integers; you have to name the fds either
> way.  Either you name it with getfd, or you name it with add-fd.  But
> getfd is not as nice as add-fd when it comes to ensuring that fds are
> not leaked in qemu, even when the management app such as libvirt
> restarts.  Furthermore, if it is possible to specify taps by pathname
> instead of by fd inheritance, then using getfd means you have to support
> two different approaches in QMP to distinguish which string is being
> supplied, while supporting add-fd means you only have to support
> qemu_open() which handles both direct names and fd passing in a single
> string interface.
>
> As for libvirt support of add-fd, I'm currently working with Stefan
> Berger to get patches applied; the goal is tha libvirt 1.0.3 (end of
> February) will support add-fd.
>

Thanks, I know there are advantages of add-fd, but current tap does not
use qemu_open() which means it can't support fdset. We can add this in
the future.




  parent reply	other threads:[~2013-01-31 15:04 UTC|newest]

Thread overview: 32+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-01-30 11:12 [PATCH V4 00/22] Multiqueue virtio-net Jason Wang
2013-01-30 11:12 ` [PATCH V4 01/22] net: tap: using bool instead of bitfield Jason Wang
2013-01-30 11:12 ` [PATCH V4 02/22] net: tap: use abort() instead of assert(0) Jason Wang
2013-01-30 11:12 ` [PATCH V4 03/22] net: introduce qemu_get_queue() Jason Wang
2013-01-30 11:12 ` [PATCH V4 04/22] net: introduce qemu_get_nic() Jason Wang
2013-01-30 11:12 ` [PATCH V4 05/22] net: intorduce qemu_del_nic() Jason Wang
2013-01-30 11:12 ` [PATCH V4 06/22] net: introduce qemu_find_net_clients_except() Jason Wang
2013-01-30 11:12 ` [PATCH V4 07/22] net: introduce qemu_net_client_setup() Jason Wang
2013-01-30 11:12 ` [PATCH V4 08/22] net: introduce NetClientState destructor Jason Wang
2013-01-30 11:12 ` [PATCH V4 09/22] net: multiqueue support Jason Wang
2013-01-30 11:12 ` [PATCH V4 10/22] tap: import linux multiqueue constants Jason Wang
2013-01-30 11:12 ` [PATCH V4 11/22] tap: factor out common tap initialization Jason Wang
2013-01-30 11:12 ` [PATCH V4 12/22] tap: add Linux multiqueue support Jason Wang
2013-01-30 11:12 ` [PATCH V4 13/22] tap: support enabling or disabling a queue Jason Wang
2013-01-30 11:12 ` [PATCH V4 14/22] tap: introduce a helper to get the name of an interface Jason Wang
2013-01-30 11:12 ` [PATCH V4 15/22] tap: multiqueue support Jason Wang
2013-01-30 11:12 ` [PATCH V4 16/22] vhost: " Jason Wang
2013-01-30 11:12 ` [PATCH V4 17/22] virtio: introduce virtio_del_queue() Jason Wang
2013-01-30 11:12 ` [PATCH V4 18/22] virtio: add a queue_index to VirtQueue Jason Wang
2013-01-30 11:12 ` [PATCH V4 19/22] virtio-net: separate virtqueue from VirtIONet Jason Wang
2013-01-30 11:12 ` [PATCH V4 20/22] virtio-net: multiqueue support Jason Wang
2013-01-30 11:12 ` [PATCH V4 21/22] virtio-net: migration support for multiqueue Jason Wang
2013-01-30 11:12 ` [PATCH V4 22/22] virtio-net: compat multiqueue support Jason Wang
     [not found] ` <5109669F.5010405@redhat.com>
2013-01-31  7:00   ` [Qemu-devel] [PATCH V4 00/22] Multiqueue virtio-net Jason Wang
2013-01-31 13:44     ` Eric Blake
2013-01-31 13:58       ` [Qemu-devel] " Michael S. Tsirkin
2013-01-31 15:18         ` Eric Blake
2013-01-31 15:04       ` Jason Wang [this message]
2013-01-31 14:21 ` Michael S. Tsirkin
2013-01-31 14:36   ` Michael S. Tsirkin
2013-01-31 15:05     ` Jason Wang
2013-02-04 22:53 ` Anthony Liguori

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=510A87F7.4050705@redhat.com \
    --to=jasowang@redhat.com \
    --cc=aliguori@us.ibm.com \
    --cc=blauwirbel@gmail.com \
    --cc=eblake@redhat.com \
    --cc=gaowanlong@cn.fujitsu.com \
    --cc=jwhan@filewood.snu.ac.kr \
    --cc=krkumar2@in.ibm.com \
    --cc=kvm@vger.kernel.org \
    --cc=mprivozn@redhat.com \
    --cc=mst@redhat.com \
    --cc=qemu-devel@nongnu.org \
    --cc=rusty@rustcorp.com.au \
    --cc=shajnocz@redhat.com \
    --cc=shiyer@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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.