[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PULL 1/2] util/aio-win32: Only select on what we are a
From: |
Paolo Bonzini |
Subject: |
Re: [Qemu-devel] [PULL 1/2] util/aio-win32: Only select on what we are actually waiting for |
Date: |
Mon, 17 Jul 2017 19:23:40 +0200 |
> + if (io_read) {
> + bitmask |= FD_READ | FD_ACCEPT | FD_CLOSE;
> + }
> +
> + if (io_write) {
> + bitmask |= FD_WRITE | FD_CONNECT;
> + }
> +
> event = event_notifier_get_handle(&ctx->notifier);
> - WSAEventSelect(node->pfd.fd, event,
> - FD_READ | FD_ACCEPT | FD_CLOSE |
> - FD_CONNECT | FD_WRITE | FD_OOB);
> + WSAEventSelect(node->pfd.fd, event, bitmask);
> }
>
As noticed by Eric, if the same socket is in use via both aio-win32 and
another GSource, or via multiple AioContexts, this would break because
there is only one WSAEventSelect mask for each socket handle.
It is probably not going to break anything in the case of aio-win32, but I
think it is worth at least a comment. And because WSAEventSelect is
edge-triggered (e.g. an FD_WRITE event doesn't trigger again until the next
write) it shouldn't be that bad for performance. If there's time to revert
this patch, I think it would be preferable.
Paolo