qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [Qemu-devel] [PATCH v5 0/9] Enable passing pre-opened chardev socket FD
@ 2018-03-12 12:49 Daniel P. Berrangé
  2018-03-12 12:49 ` [Qemu-devel] [PATCH v5 1/9] char: don't silently skip tn3270 protocol init when TLS is enabled Daniel P. Berrangé
                   ` (11 more replies)
  0 siblings, 12 replies; 18+ messages in thread
From: Daniel P. Berrangé @ 2018-03-12 12:49 UTC (permalink / raw)
  To: qemu-devel
  Cc: Eric Blake, Daniel P. Berrangé, Markus Armbruster,
	Paolo Bonzini, Marc-André Lureau, Gerd Hoffmann

An update of:

  v1: https://lists.gnu.org/archive/html/qemu-devel/2017-12/msg04618.html
  v2: https://lists.gnu.org/archive/html/qemu-devel/2017-12/msg04706.html
  v3: https://lists.gnu.org/archive/html/qemu-devel/2017-12/msg04892.html
  v4: https://lists.gnu.org/archive/html/qemu-devel/2018-02/msg00950.html

This enables fixing a long standing problem that libvirt has with
starting up QEMU. It has to busy-wait retrying connect() on the QMP
monitor socket until QEMU finally creates & listens on it, but at same
time must be careful to not wait forever if QEMU exits.

With this patch series, libvirt can simply pass in a pre-opened UNIX domain
socket file descriptor, which it can immediately connect to with no busy-wait.

NB, this will generate one expected failure with patchew / checkpatch.pl

  ERROR: consider using qemu_strtol in preference to strtol
  #729: FILE: util/cutils.c:338:
  +    lresult = strtol(nptr, &ep, base);

  ERROR: consider using qemu_strtol in preference to strtol
  #779: FILE: util/cutils.c:388:
  +    lresult = strtol(nptr, &ep, base);

This is ok to ignore, because the patch in question is introducing new
qemu_strtoXXX wrappers

Changed in v5:

  - Docs typo (Eric)
  - Fix errno setting in int parsing code (Eric)

Changed in v4:

  - Add test for fd_is_socket() API (Marc-Andre)

Changed in v3:

  - Introduce  qemu_strtoi & qemu_stroui functions.

  - Split patchs up into more pieces to better separate each logical
    change

  - Introduce a new test/test-sockets.c to directly test the
    SocketAddress FD handling, separately from chardev code.

  - Add qapi docs for FD passing syntax

  - Other misc fixes in tests

  - Reduce code duplication when getting pre-opened FDs in
    socket_connect/listen.

Changed in v2:

  - Drop 'fdset' property / address kind, and use 'fd' for both CLI and HMP
  - Add unit tests

Daniel P. Berrangé (9):
  char: don't silently skip tn3270 protocol init when TLS is enabled
  cutils: add qemu_strtoi & qemu_strtoui parsers for int/unsigned int
    types
  sockets: pull code for testing IP availability out of specific test
  sockets: strengthen test suite IP protocol availability checks
  sockets: move fd_is_socket() into common sockets code
  sockets: check that the named file descriptor is a socket
  sockets: allow SocketAddress 'fd' to reference numeric file
    descriptors
  char: refactor parsing of socket address information
  char: allow passing pre-opened socket file descriptor at startup

 chardev/char-socket.c          |  34 ++-
 chardev/char.c                 |   3 +
 include/qemu/cutils.h          |   4 +
 include/qemu/sockets.h         |   1 +
 io/channel-util.c              |  13 -
 qapi/sockets.json              |   7 +
 tests/.gitignore               |   1 +
 tests/Makefile.include         |   5 +-
 tests/socket-helpers.c         | 153 ++++++++++
 tests/socket-helpers.h         |  42 +++
 tests/test-char.c              |  47 ++-
 tests/test-cutils.c            | 657 +++++++++++++++++++++++++++++++++++++++++
 tests/test-io-channel-socket.c |  72 +----
 tests/test-util-sockets.c      | 266 +++++++++++++++++
 util/cutils.c                  | 108 +++++++
 util/qemu-sockets.c            |  36 ++-
 16 files changed, 1351 insertions(+), 98 deletions(-)
 create mode 100644 tests/socket-helpers.c
 create mode 100644 tests/socket-helpers.h
 create mode 100644 tests/test-util-sockets.c

-- 
2.14.3

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

end of thread, other threads:[~2018-03-12 19:18 UTC | newest]

Thread overview: 18+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2018-03-12 12:49 [Qemu-devel] [PATCH v5 0/9] Enable passing pre-opened chardev socket FD Daniel P. Berrangé
2018-03-12 12:49 ` [Qemu-devel] [PATCH v5 1/9] char: don't silently skip tn3270 protocol init when TLS is enabled Daniel P. Berrangé
2018-03-12 12:49 ` [Qemu-devel] [PATCH v5 2/9] cutils: add qemu_strtoi & qemu_strtoui parsers for int/unsigned int types Daniel P. Berrangé
2018-03-12 12:49 ` [Qemu-devel] [PATCH v5 3/9] sockets: pull code for testing IP availability out of specific test Daniel P. Berrangé
2018-03-12 17:46   ` Daniel P. Berrangé
2018-03-12 18:08     ` Eric Blake
2018-03-12 19:18       ` Daniel P. Berrangé
2018-03-12 12:49 ` [Qemu-devel] [PATCH v5 4/9] sockets: strengthen test suite IP protocol availability checks Daniel P. Berrangé
2018-03-12 12:49 ` [Qemu-devel] [PATCH v5 5/9] sockets: move fd_is_socket() into common sockets code Daniel P. Berrangé
2018-03-12 12:49 ` [Qemu-devel] [PATCH v5 6/9] sockets: check that the named file descriptor is a socket Daniel P. Berrangé
2018-03-12 12:49 ` [Qemu-devel] [PATCH v5 7/9] sockets: allow SocketAddress 'fd' to reference numeric file descriptors Daniel P. Berrangé
2018-03-12 12:49 ` [Qemu-devel] [PATCH v5 8/9] char: refactor parsing of socket address information Daniel P. Berrangé
2018-03-12 12:49 ` [Qemu-devel] [PATCH v5 9/9] char: allow passing pre-opened socket file descriptor at startup Daniel P. Berrangé
2018-03-12 13:12 ` [Qemu-devel] [PATCH v5 0/9] Enable passing pre-opened chardev socket FD Eric Blake
2018-03-12 13:14   ` Daniel P. Berrangé
2018-03-12 14:01     ` Eric Blake
2018-03-12 14:41 ` Eric Blake
2018-03-12 17:57 ` no-reply

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).