[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: |
Alistair Francis |
Subject: |
Re: [Qemu-devel] [PULL 1/2] util/aio-win32: Only select on what we are actually waiting for |
Date: |
Wed, 19 Jul 2017 10:05:49 +0200 |
On Mon, Jul 17, 2017 at 7:23 PM, Paolo Bonzini <address@hidden> 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