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

Daniel P. Berrangé posted 9 patches 6 years, 2 months ago
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/20180205152455.12088-1-berrange@redhat.com
Test checkpatch failed
Test docker-build@min-glib passed
Test docker-mingw@fedora passed
Test docker-quick@centos6 passed
Test ppc passed
Test s390x passed
There is a newer version of this series
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            | 653 +++++++++++++++++++++++++++++++++++++++++
tests/test-io-channel-socket.c |  72 +----
tests/test-util-sockets.c      | 266 +++++++++++++++++
util/cutils.c                  | 104 +++++++
util/qemu-sockets.c            |  36 ++-
16 files changed, 1343 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
[Qemu-devel] [PATCH v4 0/9] Enable passing pre-opened chardev socket FD
Posted by Daniel P. Berrangé 6 years, 2 months ago
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

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 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. Berrange (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            | 653 +++++++++++++++++++++++++++++++++++++++++
 tests/test-io-channel-socket.c |  72 +----
 tests/test-util-sockets.c      | 266 +++++++++++++++++
 util/cutils.c                  | 104 +++++++
 util/qemu-sockets.c            |  36 ++-
 16 files changed, 1343 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


Re: [Qemu-devel] [PATCH v4 0/9] Enable passing pre-opened chardev socket FD
Posted by no-reply@patchew.org 6 years, 2 months ago
Hi,

This series seems to have some coding style problems. See output below for
more information:

Type: series
Message-id: 20180205152455.12088-1-berrange@redhat.com
Subject: [Qemu-devel] [PATCH v4 0/9] Enable passing pre-opened chardev socket FD

=== TEST SCRIPT BEGIN ===
#!/bin/bash

BASE=base
n=1
total=$(git log --oneline $BASE.. | wc -l)
failed=0

git config --local diff.renamelimit 0
git config --local diff.renames True

commits="$(git log --format=%H --reverse $BASE..)"
for c in $commits; do
    echo "Checking PATCH $n/$total: $(git log -n 1 --format=%s $c)..."
    if ! git show $c --format=email | ./scripts/checkpatch.pl --mailback -; then
        failed=1
        echo
    fi
    n=$((n+1))
done

exit $failed
=== TEST SCRIPT END ===

Updating 3c8cf5a9c21ff8782164d1def7f44bd888713384
From https://github.com/patchew-project/qemu
 t [tag update]            patchew/20180205152455.12088-1-berrange@redhat.com -> patchew/20180205152455.12088-1-berrange@redhat.com
Switched to a new branch 'test'
29c42b4507 char: allow passing pre-opened socket file descriptor at startup
aee1031ee5 char: refactor parsing of socket address information
20ea5df39c sockets: allow SocketAddress 'fd' to reference numeric file descriptors
027b5f7a00 sockets: check that the named file descriptor is a socket
0644767f1e sockets: move fd_is_socket() into common sockets code
567b6a4011 sockets: strengthen test suite IP protocol availability checks
a77b1f3224 sockets: pull code for testing IP availability out of specific test
192bab41d1 cutils: add qemu_strtoi & qemu_strtoui parsers for int/unsigned int types
faed1dfd01 char: don't silently skip tn3270 protocol init when TLS is enabled

=== OUTPUT BEGIN ===
Checking PATCH 1/9: char: don't silently skip tn3270 protocol init when TLS is enabled...
Checking PATCH 2/9: cutils: add qemu_strtoi & qemu_strtoui parsers for int/unsigned int types...
ERROR: consider using qemu_strtol in preference to strtol
#733: FILE: util/cutils.c:338:
+    lresult = strtol(nptr, &ep, base);

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

total: 2 errors, 0 warnings, 785 lines checked

Your patch has style problems, please review.  If any of these errors
are false positives report them to the maintainer, see
CHECKPATCH in MAINTAINERS.

Checking PATCH 3/9: sockets: pull code for testing IP availability out of specific test...
Checking PATCH 4/9: sockets: strengthen test suite IP protocol availability checks...
Checking PATCH 5/9: sockets: move fd_is_socket() into common sockets code...
Checking PATCH 6/9: sockets: check that the named file descriptor is a socket...
Checking PATCH 7/9: sockets: allow SocketAddress 'fd' to reference numeric file descriptors...
Checking PATCH 8/9: char: refactor parsing of socket address information...
Checking PATCH 9/9: char: allow passing pre-opened socket file descriptor at startup...
=== OUTPUT END ===

Test command exited with code: 1


---
Email generated automatically by Patchew [http://patchew.org/].
Please send your feedback to patchew-devel@freelists.org