Skip to content

Enable passing pre-opened chardev socket FD

Daniel P. Berrangé qemu-devel 5 versions – In review

Get series with b4
b4 am [email protected]

Versions newest first · linked by author and title

  1. v5 Latest9 patches 7 repliesIn review
  2. v49 patches 8 repliesSuperseded
  3. v38 patches 7 repliesSuperseded
Earlier versions · 2
VersionPostedPatchesRepliesStatus
v22 patches7 repliesSuperseded
v12 patches7 repliesSuperseded

Changes in v5 from the cover letter

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

Patches in v5 No applies recorded yet

#Subject and filesSizeRepliesApplied
1/9char: don't silently skip tn3270 protocol init when TLS is enabledchardev/char-socket.c+1 -20 replies
2/9cutils: add qemu_strtoi & qemu_strtoui parsers for int/unsigned int typesinclude/qemu/cutils.h tests/test-cutils.c util/cutils.c+769 -00 replies
3/9sockets: pull code for testing IP availability out of specific testtests/Makefile.include tests/socket-helpers.c tests/socket-helpers.h +1 more+149 -713 replies
4/9sockets: strengthen test suite IP protocol availability checkstests/socket-helpers.c tests/socket-helpers.h+60 -110 replies
5/9sockets: move fd_is_socket() into common sockets codeinclude/qemu/sockets.h io/channel-util.c tests/.gitignore +3 more+90 -130 replies
6/9sockets: check that the named file descriptor is a sockettests/test-util-sockets.c util/qemu-sockets.c+105 -20 replies
7/9sockets: allow SocketAddress 'fd' to reference numeric file descriptorsqapi/sockets.json tests/test-util-sockets.c util/qemu-sockets.c+126 -90 replies
8/9char: refactor parsing of socket address informationchardev/char-socket.c+14 -80 replies
9/9char: allow passing pre-opened socket file descriptor at startupchardev/char-socket.c chardev/char.c tests/test-char.c+60 -50 replies

Reviews trailers per patch

8 of 9 patches have a Reviewed-by or Acked-by of their own; the series has one for all of them.

PatchMarc-André LureauCornelia HuckEric Blake
SeriesR-b
1/9A-b
2/9R-b
3/9R-b
4/9R-b
5/9R-b
6/9R-b
7/9R-b
8/9R-b
9/9

Trailers given in replies are filled; those carried in the patches from earlier versions are outlined with dashes. Scroll the table sideways for all 3 reviewers.

Read the v5 thread

Cover letter [Qemu-devel] [PATCH v5 0/9] Enable passing pre-opened chardev socket FD

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
Signature · 1 line
2.14.3