On Wed, Nov 21, 2018 at 03:28:29PM +0400, Marc-André Lureau wrote: > Hi > > On Wed, Nov 21, 2018 at 3:22 PM Li Qiang <liq...@gmail.com> wrote: > > > > The fcntl will change the flags directly, use qemu_set_nonblock() > > instead. > > qemu_set_nonblock() will preserve the existing flags. And on windows, > it will register the FD to the event loop. > that's a reasonable thing to do, is this fixing an actual bug?
tap.c is only built with CONFIG_POSIX. Win32 is completely separate in tap-win32.c. So the event loop reg doesn't apply. I agree it is good to preserve fcntl flags though, so this patch looks desirable. Reviewed-by: Daniel P. Berrangé <berra...@redhat.com> > > > > > Signed-off-by: Li Qiang <liq...@gmail.com> > > --- > > net/tap.c | 10 +++++----- > > 1 file changed, 5 insertions(+), 5 deletions(-) > > > > diff --git a/net/tap.c b/net/tap.c > > index cc8525f154..e8aadd8d4b 100644 > > --- a/net/tap.c > > +++ b/net/tap.c > > @@ -592,7 +592,7 @@ int net_init_bridge(const Netdev *netdev, const char > > *name, > > return -1; > > } > > > > - fcntl(fd, F_SETFL, O_NONBLOCK); > > + qemu_set_nonblock(fd); > > vnet_hdr = tap_probe_vnet_hdr(fd); > > s = net_tap_fd_init(peer, "bridge", name, fd, vnet_hdr); > > > > @@ -707,7 +707,7 @@ static void net_init_tap_one(const NetdevTapOptions > > *tap, NetClientState *peer, > > } > > return; > > } > > - fcntl(vhostfd, F_SETFL, O_NONBLOCK); > > + qemu_set_nonblock(vhostfd); > > } > > options.opaque = (void *)(uintptr_t)vhostfd; > > > > @@ -791,7 +791,7 @@ int net_init_tap(const Netdev *netdev, const char *name, > > return -1; > > } > > > > - fcntl(fd, F_SETFL, O_NONBLOCK); > > + qemu_set_nonblock(fd); > > > > vnet_hdr = tap_probe_vnet_hdr(fd); > > > > @@ -839,7 +839,7 @@ int net_init_tap(const Netdev *netdev, const char *name, > > goto free_fail; > > } > > > > - fcntl(fd, F_SETFL, O_NONBLOCK); > > + qemu_set_nonblock(fd); > > > > if (i == 0) { > > vnet_hdr = tap_probe_vnet_hdr(fd); > > @@ -887,7 +887,7 @@ free_fail: > > return -1; > > } > > > > - fcntl(fd, F_SETFL, O_NONBLOCK); > > + qemu_set_nonblock(fd); > > vnet_hdr = tap_probe_vnet_hdr(fd); > > > > net_init_tap_one(tap, peer, "bridge", name, ifname, > > -- > > 2.11.0 > > > > > > > -- > Marc-André Lureau > 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 :|