Marc-André Lureau <marcandre.lur...@gmail.com> 于2018年11月21日周三 下午7:28写道:
> 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. > Oh, I don't consider the windows behavior. I'm not sure is this the expected behavior. > that's a reasonable thing to do, is this fixing an actual bug? > No, I just think there is no reason to change other flags in linux. Thanks, Li Qiang > > > > > 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 >