On Wed, Sep 03, 2025 at 12:44:07PM +0300, Vladimir Sementsov-Ogievskiy wrote:
> Instead of open-coded g_unix_set_fd_nonblocking() calls, use
> QEMU wrapper qemu_socket_set_nonblock().
> 
> Signed-off-by: Vladimir Sementsov-Ogievskiy <vsement...@yandex-team.ru>
> ---
>  chardev/char-fd.c                  |  4 ++--
>  chardev/char-pty.c                 |  3 +--
>  chardev/char-serial.c              |  3 +--
>  chardev/char-stdio.c               |  3 +--
>  hw/input/virtio-input-host.c       |  3 +--
>  hw/misc/ivshmem-flat.c             |  4 +++-
>  hw/misc/ivshmem-pci.c              |  8 +++++++-
>  hw/virtio/vhost-vsock.c            |  8 ++------
>  io/channel-command.c               |  9 ++++++---
>  io/channel-file.c                  |  3 +--
>  net/tap-bsd.c                      | 12 ++++++++++--
>  net/tap-linux.c                    |  8 +++++++-
>  net/tap-solaris.c                  |  7 ++++++-
>  net/tap.c                          | 21 ++++++---------------
>  qga/commands-posix.c               |  3 +--
>  tests/qtest/fuzz/virtio_net_fuzz.c |  2 +-
>  tests/qtest/vhost-user-test.c      |  3 +--
>  tests/unit/test-iov.c              |  5 +++--
>  ui/input-linux.c                   |  3 +--
>  util/event_notifier-posix.c        |  5 +++--
>  util/main-loop.c                   |  6 +++++-
>  21 files changed, 69 insertions(+), 54 deletions(-)

> diff --git a/io/channel-command.c b/io/channel-command.c
> index 8966dd3a2b..8ae9a026b3 100644
> --- a/io/channel-command.c
> +++ b/io/channel-command.c
> @@ -277,9 +277,12 @@ static int qio_channel_command_set_blocking(QIOChannel 
> *ioc,
>      cioc->blocking = enabled;
>  #else
>  
> -    if ((cioc->writefd >= 0 && !g_unix_set_fd_nonblocking(cioc->writefd, 
> !enabled, NULL)) ||
> -        (cioc->readfd >= 0 && !g_unix_set_fd_nonblocking(cioc->readfd, 
> !enabled, NULL))) {
> -        error_setg_errno(errp, errno, "Failed to set FD nonblocking");
> +    if (cioc->writefd >= 0 &&
> +        !qemu_set_blocking(cioc->writefd, enabled, errp)) {
> +        return -1;
> +    }
> +    if (cioc->readfd >= 0 &&
> +        !qemu_set_blocking(cioc->readfd, enabled, errp)) {
>          return -1;
>      }
>  #endif
> diff --git a/io/channel-file.c b/io/channel-file.c
> index ca3f180cc2..5cef75a67c 100644
> --- a/io/channel-file.c
> +++ b/io/channel-file.c
> @@ -223,8 +223,7 @@ static int qio_channel_file_set_blocking(QIOChannel *ioc,
>  #else
>      QIOChannelFile *fioc = QIO_CHANNEL_FILE(ioc);
>  
> -    if (!g_unix_set_fd_nonblocking(fioc->fd, !enabled, NULL)) {
> -        error_setg_errno(errp, errno, "Failed to set FD nonblocking");
> +    if (!qemu_set_blocking(fioc->fd, enabled, errp)) {
>          return -1;
>      }
>      return 0;

This is wrong for Windows. fioc->fd is not a socket, but this is passing
it to an API whose impl assume it is receiving a socket.


With regards,
Daniel
-- 
|: https://berrange.com      -o-    https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org         -o-            https://fstop138.berrange.com :|
|: https://entangle-photo.org    -o-    https://www.instagram.com/dberrange :|


Reply via email to