[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PULL 16/69] chardev: tcp: postpone async connection setup
From: |
Paolo Bonzini |
Subject: |
[Qemu-devel] [PULL 16/69] chardev: tcp: postpone async connection setup |
Date: |
Tue, 13 Mar 2018 23:46:26 +0100 |
From: Peter Xu <address@hidden>
This patch allows the socket chardev async connection be setup with
non-default gcontext. We do it by postponing the setup to machine done,
since until then we can know which context we should run the async
operation on.
Reviewed-by: Paolo Bonzini <address@hidden>
Signed-off-by: Peter Xu <address@hidden>
Message-Id: <address@hidden>
Acked-by: Stefan Hajnoczi <address@hidden>
Reviewed-by: Daniel P. Berrangé <address@hidden>
Signed-off-by: Paolo Bonzini <address@hidden>
---
chardev/char-socket.c | 17 ++++++++++++++---
1 file changed, 14 insertions(+), 3 deletions(-)
diff --git a/chardev/char-socket.c b/chardev/char-socket.c
index 09aa345869..f6ad6ee4d8 100644
--- a/chardev/char-socket.c
+++ b/chardev/char-socket.c
@@ -1005,9 +1005,8 @@ static void qmp_chardev_open_socket(Chardev *chr,
s->reconnect_time = reconnect;
}
- if (s->reconnect_time) {
- tcp_chr_connect_async(chr);
- } else {
+ /* If reconnect_time is set, will do that in chr_machine_done. */
+ if (!s->reconnect_time) {
if (s->is_listen) {
char *name;
s->listener = qio_net_listener_new();
@@ -1139,6 +1138,17 @@ char_socket_get_connected(Object *obj, Error **errp)
return s->connected;
}
+static int tcp_chr_machine_done_hook(Chardev *chr)
+{
+ SocketChardev *s = SOCKET_CHARDEV(chr);
+
+ if (s->reconnect_time) {
+ tcp_chr_connect_async(chr);
+ }
+
+ return 0;
+}
+
static void char_socket_class_init(ObjectClass *oc, void *data)
{
ChardevClass *cc = CHARDEV_CLASS(oc);
@@ -1154,6 +1164,7 @@ static void char_socket_class_init(ObjectClass *oc, void
*data)
cc->chr_add_client = tcp_chr_add_client;
cc->chr_add_watch = tcp_chr_add_watch;
cc->chr_update_read_handler = tcp_chr_update_read_handler;
+ cc->chr_machine_done = tcp_chr_machine_done_hook;
object_class_property_add(oc, "addr", "SocketAddress",
char_socket_get_addr, NULL,
--
2.14.3
- [Qemu-devel] [PULL 07/69] build-sys: make help could have 'modules' target, (continued)
- [Qemu-devel] [PULL 07/69] build-sys: make help could have 'modules' target, Paolo Bonzini, 2018/03/13
- [Qemu-devel] [PULL 02/69] net: allow using any PCI NICs in -net or -nic, Paolo Bonzini, 2018/03/13
- [Qemu-devel] [PULL 09/69] checkpatch: Exempt long URLs, Paolo Bonzini, 2018/03/13
- [Qemu-devel] [PULL 11/69] chardev: fix handling of EAGAIN for TCP chardev, Paolo Bonzini, 2018/03/13
- [Qemu-devel] [PULL 10/69] vl: export machine_init_done, Paolo Bonzini, 2018/03/13
- [Qemu-devel] [PULL 08/69] hw: Do not include "sysemu/block-backend.h" if it is not necessary, Paolo Bonzini, 2018/03/13
- [Qemu-devel] [PULL 13/69] chardev: allow telnet gsource to switch gcontext, Paolo Bonzini, 2018/03/13
- [Qemu-devel] [PULL 15/69] chardev: use chardev's gcontext for async connect, Paolo Bonzini, 2018/03/13
- [Qemu-devel] [PULL 12/69] chardev: update net listener gcontext, Paolo Bonzini, 2018/03/13
- [Qemu-devel] [PULL 14/69] chardev: introduce chr_machine_done hook, Paolo Bonzini, 2018/03/13
- [Qemu-devel] [PULL 16/69] chardev: tcp: postpone async connection setup,
Paolo Bonzini <=
- [Qemu-devel] [PULL 19/69] hw/i386: make IOMMUs configurable via default-configs/, Paolo Bonzini, 2018/03/13
- [Qemu-devel] [PULL 18/69] scsi: support NDOB (no data-out buffer) for WRITE SAME commands, Paolo Bonzini, 2018/03/13
- [Qemu-devel] [PULL 22/69] rcutorture: remove synchronize_rcu from readers, Paolo Bonzini, 2018/03/13
- [Qemu-devel] [PULL 21/69] hw/mips/jazz: Fix implicit creation of "-drive if=scsi" devices, Paolo Bonzini, 2018/03/13
- [Qemu-devel] [PULL 17/69] chardev: tcp: let TLS run on chardev context, Paolo Bonzini, 2018/03/13
- [Qemu-devel] [PULL 20/69] Polish the version strings containing the package version, Paolo Bonzini, 2018/03/13
- [Qemu-devel] [PULL 24/69] rcu: make memory barriers more explicit, Paolo Bonzini, 2018/03/13
- [Qemu-devel] [PULL 23/69] docs: document atomic_load_acquire and atomic_store_release, Paolo Bonzini, 2018/03/13
- [Qemu-devel] [PULL 25/69] membarrier: introduce qemu/sys_membarrier.h, Paolo Bonzini, 2018/03/13
- [Qemu-devel] [PULL 26/69] membarrier: add --enable-membarrier, Paolo Bonzini, 2018/03/13