[Qemu-devel] [PATCH v3 0/8] Enable passing pre-opened chardev socket FDs

Daniel P. Berrange posted 8 patches 6 years, 4 months ago
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/20171222134527.14467-1-berrange@redhat.com
Test checkpatch failed
Test docker passed
Test ppc passed
Test s390x passed
chardev/char-socket.c          |  31 +-
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-sockets.c           | 239 +++++++++++++++
util/cutils.c                  | 104 +++++++
util/qemu-sockets.c            |  36 ++-
16 files changed, 1315 insertions(+), 96 deletions(-)
create mode 100644 tests/socket-helpers.c
create mode 100644 tests/socket-helpers.h
create mode 100644 tests/test-sockets.c
[Qemu-devel] [PATCH v3 0/8] Enable passing pre-opened chardev socket FDs
Posted by Daniel P. Berrange 6 years, 4 months ago
This fixes a long standing problem that libvirt has with starting up QEMU.

We have 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.

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

Changed in v3:

  - Introduce  qemu_strtoi & qemu_stroui functions. NB, patchew and
    checkpatch.pl complain about this patch because it calls strtol,
    but that is valid in this case.

  - 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 (8):
  cutils: add qemu_strtoi & qemu_strtoui parsers for int/unsigned int
    types
  sockets: move fd_is_socket() into common sockets code
  sockets: pull code for testing IP availability out of specific test
  sockets: strengthen test suite IP protocol availability checks
  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          |  31 +-
 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-sockets.c           | 239 +++++++++++++++
 util/cutils.c                  | 104 +++++++
 util/qemu-sockets.c            |  36 ++-
 16 files changed, 1315 insertions(+), 96 deletions(-)
 create mode 100644 tests/socket-helpers.c
 create mode 100644 tests/socket-helpers.h
 create mode 100644 tests/test-sockets.c

-- 
2.14.3


Re: [Qemu-devel] [PATCH v3 0/8] Enable passing pre-opened chardev socket FDs
Posted by no-reply@patchew.org 6 years, 4 months ago
Hi,

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

Type: series
Message-id: 20171222134527.14467-1-berrange@redhat.com
Subject: [Qemu-devel] [PATCH v3 0/8] Enable passing pre-opened chardev socket FDs

=== 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/20171221212125.19075-1-maxime.coquelin@redhat.com -> patchew/20171221212125.19075-1-maxime.coquelin@redhat.com
 t [tag update]            patchew/20171222134527.14467-1-berrange@redhat.com -> patchew/20171222134527.14467-1-berrange@redhat.com
Switched to a new branch 'test'
67c8205ee6 char: allow passing pre-opened socket file descriptor at startup
4d76d8236d char: refactor parsing of socket address information
c994a8be65 sockets: allow SocketAddress 'fd' to reference numeric file descriptors
0b119aed04 sockets: check that the named file descriptor is a socket
46492af33f sockets: strengthen test suite IP protocol availability checks
6b8bfebc73 sockets: pull code for testing IP availability out of specific test
e8740ef3aa sockets: move fd_is_socket() into common sockets code
be50c154af cutils: add qemu_strtoi & qemu_strtoui parsers for int/unsigned int types

=== OUTPUT BEGIN ===
Checking PATCH 1/8: cutils: add qemu_strtoi & qemu_strtoui parsers for int/unsigned int types...
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);

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 2/8: sockets: move fd_is_socket() into common sockets code...
Checking PATCH 3/8: sockets: pull code for testing IP availability out of specific test...
Checking PATCH 4/8: sockets: strengthen test suite IP protocol availability checks...
Checking PATCH 5/8: sockets: check that the named file descriptor is a socket...
Checking PATCH 6/8: sockets: allow SocketAddress 'fd' to reference numeric file descriptors...
Checking PATCH 7/8: char: refactor parsing of socket address information...
Checking PATCH 8/8: 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