All of lore.kernel.org
 help / color / mirror / Atom feed
* [Qemu-devel] [PATCH v2 00/15] qio: general non-default GMainContext support
@ 2018-03-01  8:44 Peter Xu
  2018-03-01  8:44 ` [Qemu-devel] [PATCH v2 01/15] chardev: fix leak in tcp_chr_telnet_init_io() Peter Xu
                   ` (15 more replies)
  0 siblings, 16 replies; 62+ messages in thread
From: Peter Xu @ 2018-03-01  8:44 UTC (permalink / raw)
  To: qemu-devel
  Cc: Paolo Bonzini, Daniel P . Berrange, Juan Quintela, peterx,
	Marc-André Lureau, Markus Armbruster, Stefan Hajnoczi,
	Dr . David Alan Gilbert

This is another preparation work for monitor OOB seires.

V1: http://lists.nongnu.org/archive/html/qemu-devel/2018-02/msg06972.html

V2 rewrote the bottom half of the code.  The first 8 patches are
mostly the same, but I rewrote the last patches to solve both TLS and
reconnect use cases by introducing a machine_done hook for chardevs in
general.  So if I copy the problems:

- migration
  - incoming side: still always running on main context, while we need
    to be able to run some command in OOB thread [1]
- tcp chardev (non-tcp chardevs should all support non-NULL context now)
  - server listening mode: QIO net listener used [2]
  - TELNET session: an isolated GSource used (tcp_chr_telnet_init) [3]
  - when "reconnect=N" is used, QIO threaded task is used [4]
  - TLS session: QIO tls handshake is used (tcp_chr_tls_init) [5]

Problem [1-3] are still fixed in the old way, but [4-5] now are fixed
by using the new machine_done notifier.

I'll still try to provide a changelog beside the big change mentioned:

v2:
- collect r-bs
- qio_channel_add_watch_full() should still return the same thing as
  the old one, and introduced qio_channel_add_watch_full() to return a
  GSource pointer. [Dan]
- Fix commit message on RDMA. It's using QIO, but still, I am not
  touching it.  [Dan]
- use qio_net_listener_set_client_func_full() directly, and avoid
  introducing new API. [Dan]

Please review.  Thanks.

Peter Xu (15):
  chardev: fix leak in tcp_chr_telnet_init_io()
  qio: rename qio_task_thread_result
  qio: introduce qio_channel_add_watch_{full|source}
  migration: let incoming side use thread context
  qio: refactor net listener source operations
  qio: store gsources for net listeners
  qio/chardev: update net listener gcontext
  chardev: allow telnet gsource to switch gcontext
  qio: non-default context for threaded qtask
  qio: non-default context for async conn
  qio: non-default context for TLS handshake
  chardev: introduce chr_machine_done hook
  char: use chardev's gcontext for async connect
  chardev: tcp: postpone async connection setup
  chardev: tcp: postpone TLS work until machine done

 chardev/char-mux.c             |  29 ++++++++++
 chardev/char-socket.c          | 124 ++++++++++++++++++++++++++++++++---------
 chardev/char.c                 |  43 ++++++--------
 include/chardev/char.h         |   2 +
 include/io/channel-socket.h    |   4 +-
 include/io/channel-tls.h       |  17 ++++++
 include/io/channel.h           |  44 +++++++++++++++
 include/io/net-listener.h      |  21 ++++++-
 include/io/task.h              |   6 +-
 io/channel-socket.c            |  12 ++--
 io/channel-tls.c               |  51 ++++++++++++-----
 io/channel.c                   |  40 +++++++++++--
 io/dns-resolver.c              |   3 +-
 io/net-listener.c              | 112 +++++++++++++++++++++----------------
 io/task.c                      |  22 +++++++-
 migration/exec.c               |   9 ++-
 migration/fd.c                 |   9 ++-
 migration/socket.c             |  13 +++--
 tests/test-io-channel-socket.c |   2 +-
 tests/test-io-task.c           |   2 +
 20 files changed, 415 insertions(+), 150 deletions(-)

-- 
2.14.3

^ permalink raw reply	[flat|nested] 62+ messages in thread

end of thread, other threads:[~2018-03-05  5:43 UTC | newest]

Thread overview: 62+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-03-01  8:44 [Qemu-devel] [PATCH v2 00/15] qio: general non-default GMainContext support Peter Xu
2018-03-01  8:44 ` [Qemu-devel] [PATCH v2 01/15] chardev: fix leak in tcp_chr_telnet_init_io() Peter Xu
2018-03-01 17:39   ` Paolo Bonzini
2018-03-02  3:46     ` Peter Xu
2018-03-01  8:44 ` [Qemu-devel] [PATCH v2 02/15] qio: rename qio_task_thread_result Peter Xu
2018-03-01  8:44 ` [Qemu-devel] [PATCH v2 03/15] qio: introduce qio_channel_add_watch_{full|source} Peter Xu
2018-03-01 15:37   ` Daniel P. Berrangé
2018-03-01 17:13   ` Paolo Bonzini
2018-03-02  3:54     ` Peter Xu
2018-03-02 11:15       ` Paolo Bonzini
2018-03-02 15:44     ` Daniel P. Berrangé
2018-03-02 15:53       ` Paolo Bonzini
2018-03-01  8:44 ` [Qemu-devel] [PATCH v2 04/15] migration: let incoming side use thread context Peter Xu
2018-03-01 16:03   ` Daniel P. Berrangé
2018-03-02  3:56     ` Peter Xu
2018-03-01  8:44 ` [Qemu-devel] [PATCH v2 05/15] qio: refactor net listener source operations Peter Xu
2018-03-01 10:47   ` Daniel P. Berrangé
2018-03-02  3:58     ` Peter Xu
2018-03-02  4:04       ` Peter Xu
2018-03-02 10:51       ` Daniel P. Berrangé
2018-03-05  5:34         ` Peter Xu
2018-03-01  8:44 ` [Qemu-devel] [PATCH v2 06/15] qio: store gsources for net listeners Peter Xu
2018-03-01 15:40   ` Daniel P. Berrangé
2018-03-01 17:12   ` Paolo Bonzini
2018-03-02  4:10     ` Peter Xu
2018-03-02  4:59     ` Peter Xu
2018-03-01  8:44 ` [Qemu-devel] [PATCH v2 07/15] qio/chardev: update net listener gcontext Peter Xu
2018-03-01 15:43   ` Daniel P. Berrangé
2018-03-02  4:26     ` Peter Xu
2018-03-02 11:17       ` Paolo Bonzini
2018-03-05  5:43         ` Peter Xu
2018-03-01  8:44 ` [Qemu-devel] [PATCH v2 08/15] chardev: allow telnet gsource to switch gcontext Peter Xu
2018-03-01 15:46   ` Daniel P. Berrangé
2018-03-01 17:16     ` Paolo Bonzini
2018-03-02  4:37       ` Peter Xu
2018-03-02 11:02       ` Daniel P. Berrangé
2018-03-01  8:44 ` [Qemu-devel] [PATCH v2 09/15] qio: non-default context for threaded qtask Peter Xu
2018-03-01 15:47   ` Daniel P. Berrangé
2018-03-01 17:18   ` Paolo Bonzini
2018-03-01  8:44 ` [Qemu-devel] [PATCH v2 10/15] qio: non-default context for async conn Peter Xu
2018-03-01 15:48   ` Daniel P. Berrangé
2018-03-02  5:01     ` Peter Xu
2018-03-01  8:44 ` [Qemu-devel] [PATCH v2 11/15] qio: non-default context for TLS handshake Peter Xu
2018-03-01 15:50   ` Daniel P. Berrangé
2018-03-02  6:18     ` Peter Xu
2018-03-01 17:22   ` Paolo Bonzini
2018-03-02  6:09     ` Peter Xu
2018-03-01  8:44 ` [Qemu-devel] [PATCH v2 12/15] chardev: introduce chr_machine_done hook Peter Xu
2018-03-01 17:38   ` Paolo Bonzini
2018-03-01  8:44 ` [Qemu-devel] [PATCH v2 13/15] char: use chardev's gcontext for async connect Peter Xu
2018-03-01 17:38   ` Paolo Bonzini
2018-03-01  8:44 ` [Qemu-devel] [PATCH v2 14/15] chardev: tcp: postpone async connection setup Peter Xu
2018-03-01 16:01   ` Daniel P. Berrangé
2018-03-02  6:27     ` Peter Xu
2018-03-01 17:38   ` Paolo Bonzini
2018-03-01  8:44 ` [Qemu-devel] [PATCH v2 15/15] chardev: tcp: postpone TLS work until machine done Peter Xu
2018-03-01 16:03   ` Daniel P. Berrangé
2018-03-02  6:34     ` Peter Xu
2018-03-01 17:37   ` Paolo Bonzini
2018-03-02  6:43     ` Peter Xu
2018-03-01 16:07 ` [Qemu-devel] [PATCH v2 00/15] qio: general non-default GMainContext support Daniel P. Berrangé
2018-03-02  6:48   ` Peter Xu

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.