From: Paolo Bonzini <pbonzini@redhat.com>
To: qemu-devel@nongnu.org
Cc: "Marc-André Lureau" <marcandre.lureau@redhat.com>
Subject: [Qemu-devel] [PULL 36/50] vhost-user: only initialize queue 0 CharBackend
Date: Mon, 24 Oct 2016 15:47:21 +0200 [thread overview]
Message-ID: <1477316855-42218-37-git-send-email-pbonzini@redhat.com> (raw)
In-Reply-To: <1477316855-42218-1-git-send-email-pbonzini@redhat.com>
From: Marc-André Lureau <marcandre.lureau@redhat.com>
All the queues share the same chardev. Initialize only the first queue
CharBackend, and pass it to other queues. This will allow to claim the
chardev only once in a later change.
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Message-Id: <20161022095318.17775-18-marcandre.lureau@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
net/vhost-user.c | 29 +++++++++++++----------------
1 file changed, 13 insertions(+), 16 deletions(-)
diff --git a/net/vhost-user.c b/net/vhost-user.c
index 8b7e98d..357b500 100644
--- a/net/vhost-user.c
+++ b/net/vhost-user.c
@@ -20,7 +20,7 @@
typedef struct VhostUserState {
NetClientState nc;
- CharBackend chr;
+ CharBackend chr; /* only queue index 0 */
VHostNetState *vhost_net;
guint watch;
uint64_t acked_features;
@@ -62,7 +62,7 @@ static void vhost_user_stop(int queues, NetClientState *ncs[])
}
}
-static int vhost_user_start(int queues, NetClientState *ncs[])
+static int vhost_user_start(int queues, NetClientState *ncs[], CharBackend *be)
{
VhostNetOptions options;
struct vhost_net *net = NULL;
@@ -78,7 +78,7 @@ static int vhost_user_start(int queues, NetClientState *ncs[])
s = DO_UPCAST(VhostUserState, nc, ncs[i]);
options.net_backend = ncs[i];
- options.opaque = &s->chr;
+ options.opaque = be;
options.busyloop_timeout = 0;
net = vhost_net_init(&options);
if (!net) {
@@ -150,7 +150,7 @@ static void vhost_user_cleanup(NetClientState *nc)
g_free(s->vhost_net);
s->vhost_net = NULL;
}
- if (s->chr.chr) {
+ if (nc->queue_index == 0 && s->chr.chr) {
qemu_chr_fe_set_handlers(&s->chr, NULL, NULL, NULL, NULL, NULL);
qemu_chr_fe_release(s->chr.chr);
s->chr.chr = NULL;
@@ -213,7 +213,7 @@ static void net_vhost_user_event(void *opaque, int event)
case CHR_EVENT_OPENED:
s->watch = qemu_chr_fe_add_watch(&s->chr, G_IO_HUP,
net_vhost_user_watch, s);
- if (vhost_user_start(queues, ncs) < 0) {
+ if (vhost_user_start(queues, ncs, &s->chr) < 0) {
qemu_chr_fe_disconnect(&s->chr);
return;
}
@@ -247,21 +247,18 @@ static int net_vhost_user_init(NetClientState *peer, const char *device,
for (i = 0; i < queues; i++) {
nc = qemu_new_net_client(&net_vhost_user_info, peer, device, name);
- if (!nc0) {
- nc0 = nc;
- }
-
snprintf(nc->info_str, sizeof(nc->info_str), "vhost-user%d to %s",
i, chr->label);
-
nc->queue_index = i;
-
- s = DO_UPCAST(VhostUserState, nc, nc);
-
- if (!qemu_chr_fe_init(&s->chr, chr, &err)) {
- error_report_err(err);
- return -1;
+ if (!nc0) {
+ nc0 = nc;
+ s = DO_UPCAST(VhostUserState, nc, nc);
+ if (!qemu_chr_fe_init(&s->chr, chr, &err)) {
+ error_report_err(err);
+ return -1;
+ }
}
+
}
s = DO_UPCAST(VhostUserState, nc, nc0);
--
1.8.3.1
next prev parent reply other threads:[~2016-10-24 13:48 UTC|newest]
Thread overview: 52+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-10-24 13:46 [Qemu-devel] [PULL 00/50] Miscellaneous patches for 2016-10-24 Paolo Bonzini
2016-10-24 13:46 ` [Qemu-devel] [PULL 01/50] kvm-all: don't use stale dbg_data->cpu Paolo Bonzini
2016-10-24 13:46 ` [Qemu-devel] [PULL 02/50] rbd: shift byte count as a 64-bit value Paolo Bonzini
2016-10-24 13:46 ` [Qemu-devel] [PULL 03/50] block/iscsi: Introducing new zero-copy API Paolo Bonzini
2016-10-24 13:46 ` [Qemu-devel] [PULL 04/50] block/iscsi: Adding new iSER transport layer option Paolo Bonzini
2016-10-24 13:46 ` [Qemu-devel] [PULL 05/50] Put the copyright information on a separate line Paolo Bonzini
2016-10-24 13:46 ` [Qemu-devel] [PULL 06/50] atomic: introduce smp_mb_acquire and smp_mb_release Paolo Bonzini
2016-10-24 13:46 ` [Qemu-devel] [PULL 07/50] qemu-thread: use acquire/release to clarify semantics of QemuEvent Paolo Bonzini
2016-10-24 13:46 ` [Qemu-devel] [PULL 08/50] rcu: simplify memory barriers Paolo Bonzini
2016-10-24 13:46 ` [Qemu-devel] [PULL 09/50] atomic: base mb_read/mb_set on load-acquire and store-release Paolo Bonzini
2016-10-24 13:46 ` [Qemu-devel] [PULL 10/50] qht-bench: relax test_start/stop atomic accesses Paolo Bonzini
2016-10-24 13:46 ` [Qemu-devel] [PULL 11/50] test-i386: fix bitrot for 64-bit Paolo Bonzini
2016-10-24 13:46 ` [Qemu-devel] [PULL 12/50] target-i386: fix 32-bit addresses in LEA Paolo Bonzini
2016-10-24 13:46 ` [Qemu-devel] [PULL 13/50] tcg: try sti when moving a constant into a dead memory temp Paolo Bonzini
2016-10-24 13:46 ` [Qemu-devel] [PULL 14/50] memory: eliminate global MemoryListeners Paolo Bonzini
2016-10-24 13:47 ` [Qemu-devel] [PULL 15/50] memory: add a per-AddressSpace list of listeners Paolo Bonzini
2016-10-24 13:47 ` [Qemu-devel] [PULL 16/50] memory: optimize memory_global_dirty_log_sync Paolo Bonzini
2016-10-24 13:47 ` [Qemu-devel] [PULL 17/50] memory: optimize memory_region_sync_dirty_bitmap Paolo Bonzini
2016-10-24 13:47 ` [Qemu-devel] [PULL 18/50] char: serial: check divider value against baud base Paolo Bonzini
2016-10-24 13:47 ` [Qemu-devel] [PULL 19/50] char.h: misc doc fix Paolo Bonzini
2016-10-24 13:47 ` [Qemu-devel] [PULL 20/50] rng: remove unused included header Paolo Bonzini
2016-10-24 13:47 ` [Qemu-devel] [PULL 21/50] char: remove use-after-free on win-stdio Paolo Bonzini
2016-10-24 13:47 ` [Qemu-devel] [PULL 22/50] ringbuf: fix chr_write return value Paolo Bonzini
2016-10-24 13:47 ` [Qemu-devel] [PULL 23/50] sun4uv: fix serial initialization regression Paolo Bonzini
2016-10-24 13:47 ` [Qemu-devel] [PULL 24/50] malta: replace chr init by CHR_EVENT_OPENED handler Paolo Bonzini
2016-10-24 13:47 ` [Qemu-devel] [PULL 25/50] char: remove init callback Paolo Bonzini
2016-10-24 13:47 ` [Qemu-devel] [PULL 26/50] xilinx: fix buffer overflow on realize Paolo Bonzini
2016-10-24 13:47 ` [Qemu-devel] [PULL 27/50] mux: split mux_chr_update_read_handler() Paolo Bonzini
2016-10-24 13:47 ` [Qemu-devel] [PULL 28/50] char: introduce CharBackend Paolo Bonzini
2016-10-24 13:47 ` [Qemu-devel] [PULL 29/50] char: start converting mux driver to use CharBackend Paolo Bonzini
2016-10-24 13:47 ` [Qemu-devel] [PULL 30/50] char: replace PROP_CHR with CharBackend Paolo Bonzini
2016-10-24 13:47 ` [Qemu-devel] [PULL 31/50] char: remaining switch to CharBackend in frontend Paolo Bonzini
2016-10-24 13:47 ` [Qemu-devel] [PULL 32/50] char: rename some frontend functions Paolo Bonzini
2016-10-24 13:47 ` [Qemu-devel] [PULL 33/50] colo: claim in find_and_check_chardev Paolo Bonzini
2016-10-24 13:47 ` [Qemu-devel] [PULL 34/50] char: use qemu_chr_fe* functions with CharBackend argument Paolo Bonzini
2016-10-24 13:47 ` [Qemu-devel] [PULL 35/50] char: fold qemu_chr_set_handlers in qemu_chr_fe_set_handlers Paolo Bonzini
2016-10-24 13:47 ` Paolo Bonzini [this message]
2016-10-24 13:47 ` [Qemu-devel] [PULL 37/50] char: replace qemu_chr_claim/release with qemu_chr_fe_init/deinit Paolo Bonzini
2016-10-24 13:47 ` [Qemu-devel] [PULL 38/50] char: make some qemu_chr_fe skip if no driver Paolo Bonzini
2016-10-24 13:47 ` [Qemu-devel] [PULL 39/50] tests: start chardev unit tests Paolo Bonzini
2016-10-24 13:47 ` [Qemu-devel] [PULL 40/50] char: move front end handlers in CharBackend Paolo Bonzini
2016-10-24 13:47 ` [Qemu-devel] [PULL 41/50] char: rename chr_close/chr_free Paolo Bonzini
2016-10-24 13:47 ` [Qemu-devel] [PULL 42/50] char: remove explicit_fe_open, use a set_handlers argument Paolo Bonzini
2016-10-24 13:47 ` [Qemu-devel] [PULL 43/50] char: move fe_open in CharBackend Paolo Bonzini
2016-10-24 13:47 ` [Qemu-devel] [PULL 44/50] char: remove unused CHR_EVENT_FOCUS Paolo Bonzini
2016-10-24 13:47 ` [Qemu-devel] [PULL 45/50] char: use an enum for CHR_EVENT Paolo Bonzini
2016-10-24 13:47 ` [Qemu-devel] [PULL 46/50] char: remove unused qemu_chr_fe_event Paolo Bonzini
2016-10-24 13:47 ` [Qemu-devel] [PULL 47/50] char: replace avail_connections Paolo Bonzini
2016-10-24 13:47 ` [Qemu-devel] [PULL 48/50] char: use common error path in qmp_chardev_add Paolo Bonzini
2016-10-24 13:47 ` [Qemu-devel] [PULL 49/50] char: remove explicit_be_open from CharDriverState Paolo Bonzini
2016-10-24 13:47 ` [Qemu-devel] [PULL 50/50] exec.c: workaround regression caused by alignment change in d2f39ad Paolo Bonzini
2016-10-24 15:11 ` [Qemu-devel] [PULL 00/50] Miscellaneous patches for 2016-10-24 Peter Maydell
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=1477316855-42218-37-git-send-email-pbonzini@redhat.com \
--to=pbonzini@redhat.com \
--cc=marcandre.lureau@redhat.com \
--cc=qemu-devel@nongnu.org \
/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).