From: Paolo Bonzini <pbonzini@redhat.com>
To: "Daniel P. Berrange" <berrange@redhat.com>, qemu-devel@nongnu.org
Cc: Stefan Weil <sw@weilnetz.de>,
Andrew Baumann <Andrew.Baumann@microsoft.com>
Subject: Re: [Qemu-devel] [PATCH v1 00/21] Multiple fixes & improves to QIOChannel & Win32
Date: Wed, 9 Mar 2016 19:06:21 +0100 [thread overview]
Message-ID: <56E0661D.9000601@redhat.com> (raw)
In-Reply-To: <1457544504-8548-1-git-send-email-berrange@redhat.com>
On 09/03/2016 18:28, Daniel P. Berrange wrote:
> This series started out as an attempt to fix the Win32 problems
> identified by Andrew Baumann
>
> https://lists.gnu.org/archive/html/qemu-devel/2016-03/msg01343.html
>
> It turned into a significantly larger cleanup of some chardev
> and osdep win32 portability code.
>
>
> Patch 1 addresses Andrew's 2nd stated problem - handling of
> getpeername() failures, by fixing errno handling on Win32.
>
> Patches 2-7 do some fixes in the test-io-channel-socket test
> case so that it is able to run on Win32.
>
> Patch 8 is a simple error message fix.
>
> Patch 9 adds missing EWOULDBLOCK handling to QIOChannelSocket
>
> Patches 10-12 change QIOChannelSocket so that it uses a Win32
> specific GSource implementation for creating watches. This is
> the key fix for Andrew's 1st stated problem.
>
> Patch 13 fixes a further problem identified with chardev on
> Win32 - the 'wait' option behaves the same as 'nowait'.
>
> At this point tests/test-io-channel-socket passes and
>
> qemu-system-x86_64.exe -serial tcp:127.0.0.1:9000,server,nowait -device sga -display non
>
> works on win32 once more.
>
>
> Patches 14-16 are some cleanups to the chardev code to improve
> its clarity. They are not required for fixing any real problem
>
> Patches 17-20 change the way we provide Win32 portability for
> sockets APIs inside QEMU. These do fix a number of bugs in the
> QEMU code related to mistaken use of errno instead of
> socket_error(), or close() instead fo closesocket() and
> accept() instead of qemu_accept(). None of these bugs appear
> to be critical issues.
>
> Patch 21 improves error reporting with error_abort
>
> Based on this, I'm proposing 1-13 for QEMU 2.6 release as they
> fix critical win32 bugs.
>
> Patches 14-21 can either be included in 2.6 or 2.7 - I'm
> ambivalent on which, since they're cleanups / minor fixes.
>
> Daniel P. Berrange (18):
> osdep: fix socket_error() to work with Mingw64
> io: use bind() to check for IPv4/6 availability
> io: initialize sockets in test program
> io: bind to socket before creating QIOChannelSocket
> io: wait for incoming client in socket test
> io: set correct error object in background reader test thread
> io: assert errors before asserting content in I/O test
> io: fix copy+paste mistake in socket error message
> io: add missing EWOULDBLOCK checks in Win32 I/O code paths
> char: ensure listener socket is in blocking mode when waiting
> char: remove qemu_chr_finish_socket_connection method
> char: remove socket_try_connect method
> char: remove qemu_chr_open_socket_fd method
> osdep: add wrappers for socket functions
> osdep: remove use of Win32 specific closesocket/ioctlsocket
> osdep: remove use of socket_error() from all code
> osdep: remove direct use of qemu_socket & qemu_accept
> error: ensure errno detail is printed with error_abort
>
> Paolo Bonzini (3):
> io: pass HANDLE to g_source_add_poll on Win32
> io: introduce qio_channel_create_socket_watch
> io: implement socket watch for win32 using WSAEventSelect+select
>
> Makefile | 4 +-
> block/sheepdog.c | 41 +++--
> contrib/ivshmem-server/ivshmem-server.c | 4 +-
> include/io/channel-watch.h | 20 ++-
> include/io/channel.h | 3 +
> include/qemu/sockets.h | 19 --
> include/sysemu/os-posix.h | 17 ++
> include/sysemu/os-win32.h | 106 ++++++++---
> io/channel-socket.c | 63 ++++---
> io/channel-watch.c | 162 ++++++++++++++++-
> io/channel.c | 14 ++
> migration/qemu-file-unix.c | 16 +-
> migration/tcp.c | 13 +-
> migration/unix.c | 2 +-
> net/socket.c | 49 +++--
> qemu-char.c | 97 ++++------
> qga/channel-posix.c | 4 +-
> slirp/ip_icmp.c | 4 +-
> slirp/misc.c | 8 +-
> slirp/slirp.h | 2 -
> slirp/socket.c | 4 +-
> slirp/tcp_input.c | 4 -
> slirp/tcp_subr.c | 8 +-
> slirp/udp.c | 6 +-
> tests/io-channel-helpers.c | 6 +-
> tests/test-io-channel-socket.c | 92 +++++-----
> util/error.c | 40 ++---
> util/osdep.c | 42 -----
> util/oslib-posix.c | 39 ++++
> util/oslib-win32.c | 304 +++++++++++++++++++++++++++++++-
> util/qemu-coroutine-io.c | 6 +-
> util/qemu-sockets.c | 32 ++--
> 32 files changed, 867 insertions(+), 364 deletions(-)
>
For everything I didn't comment on:
Reviewed-by: Paolo Bonzini <pbonzini@redhat.com>
prev parent reply other threads:[~2016-03-09 18:06 UTC|newest]
Thread overview: 46+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-03-09 17:28 [Qemu-devel] [PATCH v1 00/21] Multiple fixes & improves to QIOChannel & Win32 Daniel P. Berrange
2016-03-09 17:28 ` [Qemu-devel] [PATCH v1 01/21] osdep: fix socket_error() to work with Mingw64 Daniel P. Berrange
2016-03-10 16:12 ` Paolo Bonzini
2016-03-10 16:13 ` Daniel P. Berrange
2016-03-09 17:28 ` [Qemu-devel] [PATCH v1 02/21] io: use bind() to check for IPv4/6 availability Daniel P. Berrange
2016-03-09 17:28 ` [Qemu-devel] [PATCH v1 03/21] io: initialize sockets in test program Daniel P. Berrange
2016-03-09 17:28 ` [Qemu-devel] [PATCH v1 04/21] io: bind to socket before creating QIOChannelSocket Daniel P. Berrange
2016-03-09 17:28 ` [Qemu-devel] [PATCH v1 05/21] io: wait for incoming client in socket test Daniel P. Berrange
2016-03-09 17:28 ` [Qemu-devel] [PATCH v1 06/21] io: set correct error object in background reader test thread Daniel P. Berrange
2016-03-09 17:28 ` [Qemu-devel] [PATCH v1 07/21] io: assert errors before asserting content in I/O test Daniel P. Berrange
2016-03-09 17:28 ` [Qemu-devel] [PATCH v1 08/21] io: fix copy+paste mistake in socket error message Daniel P. Berrange
2016-03-09 17:28 ` [Qemu-devel] [PATCH v1 09/21] io: add missing EWOULDBLOCK checks in Win32 I/O code paths Daniel P. Berrange
2016-03-09 17:28 ` [Qemu-devel] [PATCH v1 10/21] io: pass HANDLE to g_source_add_poll on Win32 Daniel P. Berrange
2016-03-09 17:28 ` [Qemu-devel] [PATCH v1 11/21] io: introduce qio_channel_create_socket_watch Daniel P. Berrange
2016-03-09 17:28 ` [Qemu-devel] [PATCH v1 12/21] io: implement socket watch for win32 using WSAEventSelect+select Daniel P. Berrange
2016-03-09 17:47 ` Paolo Bonzini
2016-03-09 19:59 ` Eric Blake
2016-03-09 21:24 ` Paolo Bonzini
2016-03-10 9:41 ` Daniel P. Berrange
2016-03-10 9:54 ` Paolo Bonzini
2016-03-10 16:30 ` Eric Blake
2016-03-10 14:50 ` Daniel P. Berrange
2016-03-09 17:28 ` [Qemu-devel] [PATCH v1 13/21] char: ensure listener socket is in blocking mode when waiting Daniel P. Berrange
2016-03-09 17:48 ` Paolo Bonzini
2016-03-09 17:28 ` [Qemu-devel] [PATCH v1 14/21] char: remove qemu_chr_finish_socket_connection method Daniel P. Berrange
2016-03-09 17:49 ` Paolo Bonzini
2016-03-10 14:50 ` Daniel P. Berrange
2016-03-09 17:28 ` [Qemu-devel] [PATCH v1 15/21] char: remove socket_try_connect method Daniel P. Berrange
2016-03-09 17:28 ` [Qemu-devel] [PATCH v1 16/21] char: remove qemu_chr_open_socket_fd method Daniel P. Berrange
2016-03-09 17:53 ` Paolo Bonzini
2016-03-10 14:51 ` Daniel P. Berrange
2016-03-09 17:28 ` [Qemu-devel] [PATCH v1 17/21] osdep: add wrappers for socket functions Daniel P. Berrange
2016-03-09 18:04 ` Paolo Bonzini
2016-03-10 14:52 ` Daniel P. Berrange
2016-03-09 17:28 ` [Qemu-devel] [PATCH v1 18/21] osdep: remove use of Win32 specific closesocket/ioctlsocket Daniel P. Berrange
2016-03-10 14:53 ` Daniel P. Berrange
2016-03-09 17:28 ` [Qemu-devel] [PATCH v1 19/21] osdep: remove use of socket_error() from all code Daniel P. Berrange
2016-03-09 17:59 ` Paolo Bonzini
2016-03-09 17:28 ` [Qemu-devel] [PATCH v1 20/21] osdep: remove direct use of qemu_socket & qemu_accept Daniel P. Berrange
2016-03-09 18:00 ` Paolo Bonzini
2016-03-09 17:28 ` [Qemu-devel] [PATCH v1 21/21] error: ensure errno detail is printed with error_abort Daniel P. Berrange
2016-03-09 18:01 ` Paolo Bonzini
2016-03-10 8:55 ` Markus Armbruster
2016-03-10 9:40 ` Daniel P. Berrange
2016-03-10 20:36 ` Markus Armbruster
2016-03-09 18:06 ` Paolo Bonzini [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=56E0661D.9000601@redhat.com \
--to=pbonzini@redhat.com \
--cc=Andrew.Baumann@microsoft.com \
--cc=berrange@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=sw@weilnetz.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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.