[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH for-9.1 v2 04/11] vhost-user-server: don't abort if we can't
From: |
Eric Blake |
Subject: |
Re: [PATCH for-9.1 v2 04/11] vhost-user-server: don't abort if we can't set fd non-blocking |
Date: |
Tue, 26 Mar 2024 09:40:12 -0500 |
User-agent: |
NeoMutt/20240201 |
On Tue, Mar 26, 2024 at 02:39:29PM +0100, Stefano Garzarella wrote:
> In vhost-user-server we set all fd received from the other peer
> in non-blocking mode. For some of them (e.g. memfd, shm_open, etc.)
> if we fail, it's not really a problem, because we don't use these
> fd with blocking operations, but only to map memory.
>
> In these cases a failure is not bad, so let's just report a warning
> instead of panicking if we fail to set some fd in non-blocking mode.
>
> This for example occurs in macOS where setting shm_open() fd
> non-blocking is failing (errno: 25).
What is errno 25 on MacOS?
>
> Signed-off-by: Stefano Garzarella <sgarzare@redhat.com>
> ---
> util/vhost-user-server.c | 6 +++++-
> 1 file changed, 5 insertions(+), 1 deletion(-)
>
> diff --git a/util/vhost-user-server.c b/util/vhost-user-server.c
> index 3bfb1ad3ec..064999f0b7 100644
> --- a/util/vhost-user-server.c
> +++ b/util/vhost-user-server.c
> @@ -66,7 +66,11 @@ static void vmsg_unblock_fds(VhostUserMsg *vmsg)
> {
> int i;
> for (i = 0; i < vmsg->fd_num; i++) {
> - qemu_socket_set_nonblock(vmsg->fds[i]);
> + int ret = qemu_socket_try_set_nonblock(vmsg->fds[i]);
> + if (ret) {
Should this be 'if (ret < 0)'?
> + warn_report("Failed to set fd %d nonblock for request %d: %s",
> + vmsg->fds[i], vmsg->request, strerror(-ret));
> + }
This now ignores all errors even on pre-existing fds where we NEED
non-blocking, rather than just the specific (expected) error we are
seeing on MacOS. Should this code be a bit more precise about
checking that -ret == EXXX for the expected errno value we are
ignoring for the specific fds where non-blocking is not essential?
--
Eric Blake, Principal Software Engineer
Red Hat, Inc.
Virtualization: qemu.org | libguestfs.org
[PATCH for-9.1 v2 04/11] vhost-user-server: don't abort if we can't set fd non-blocking, Stefano Garzarella, 2024/03/26
- Re: [PATCH for-9.1 v2 04/11] vhost-user-server: don't abort if we can't set fd non-blocking,
Eric Blake <=
[PATCH for-9.1 v2 03/11] libvhost-user: mask F_INFLIGHT_SHMFD if memfd is not supported, Stefano Garzarella, 2024/03/26
[PATCH for-9.1 v2 05/11] contrib/vhost-user-blk: fix bind() using the right size of the address, Stefano Garzarella, 2024/03/26
[PATCH for-9.1 v2 06/11] vhost-user: enable frontends on any POSIX system, Stefano Garzarella, 2024/03/26
[PATCH for-9.1 v2 07/11] libvhost-user: enable it on any POSIX system, Stefano Garzarella, 2024/03/26
[PATCH for-9.1 v2 08/11] contrib/vhost-user-blk: enable it on any POSIX system, Stefano Garzarella, 2024/03/26
[PATCH for-9.1 v2 09/11] hostmem: add a new memory backend based on POSIX shm_open(), Stefano Garzarella, 2024/03/26