On Mon, Jul 17, 2017 at 7:23 PM, Paolo Bonzini <pbonz...@redhat.com> wrote: >> + 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.
It looks like this was applied, I'll be back in the office next week should I try and revert this or just add a comment explaining the limitation. Either that or store the current mask and OR then all together. Thanks, Alistair > > Paolo