[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [Bug 1179731] [NEW] is networking broken on windows hos
From: |
TeLeMan |
Subject: |
Re: [Qemu-devel] [Bug 1179731] [NEW] is networking broken on windows hosts? |
Date: |
Thu, 16 May 2013 17:32:05 +0800 |
On Thu, May 16, 2013 at 4:59 PM, Paolo Bonzini <address@hidden> wrote:
> Il 16/05/2013 07:52, TeLeMan ha scritto:
>> The patch is working on 134a03e0b3d34b01b68107104c525c3bff1211d4 and
>> is not working from cbff4b342b000a7642125dbdabf61113e05eee44.
>
> Thanks.
>
> Fabien or Stefan, can you take a look?
>
> TeLeMan, can you post the exact patches that you tested on those two
> commits? (To recap, there are at least two bugs. The first is fixed by
> the patch at
> http://article.gmane.org/gmane.comp.emulators.qemu/211333/raw, the
> second is introduced by patch cbff4b3, main-loop: switch to g_poll() on
> POSIX hosts, 2013-02-20).
>
> Paolo
>
The patch for cbff4b342b000a7642125dbdabf61113e05eee44:
diff --git a/main-loop.c b/main-loop.c
index 489b27c..1558e4b 100644
--- a/main-loop.c
+++ b/main-loop.c
@@ -454,6 +454,22 @@ static int os_host_main_loop_wait(uint32_t timeout)
return ret;
}
+ gpollfds_from_select();
+ FD_ZERO(&rfds);
+ FD_ZERO(&wfds);
+ FD_ZERO(&xfds);
+ nfds = pollfds_fill(gpollfds, &rfds, &wfds, &xfds);
+ if (nfds >= 0) {
+ select_ret = select(nfds + 1, &rfds, &wfds, &xfds, &tv0);
+ if (select_ret != 0) {
+ timeout = 0;
+ }
+ if (select_ret > 0) {
+ pollfds_poll(gpollfds, nfds, &rfds, &wfds, &xfds);
+ }
+ }
+ gpollfds_to_select(select_ret);
+
g_main_context_prepare(context, &max_priority);
n_poll_fds = g_main_context_query(context, max_priority, &poll_timeout,
poll_fds, ARRAY_SIZE(poll_fds));
@@ -493,21 +509,6 @@ static int os_host_main_loop_wait(uint32_t timeout)
/* This back-and-forth between GPollFDs and select(2) is temporary. We'll
* drop it in a couple of patches, I promise :).
*/
- gpollfds_from_select();
- FD_ZERO(&rfds);
- FD_ZERO(&wfds);
- FD_ZERO(&xfds);
- nfds = pollfds_fill(gpollfds, &rfds, &wfds, &xfds);
- if (nfds >= 0) {
- select_ret = select(nfds + 1, &rfds, &wfds, &xfds, &tv0);
- if (select_ret != 0) {
- timeout = 0;
- }
- if (select_ret > 0) {
- pollfds_poll(gpollfds, nfds, &rfds, &wfds, &xfds);
- }
- }
- gpollfds_to_select(select_ret);
return select_ret || g_poll_ret;
}
The patch for 134a03e0b3d34b01b68107104c525c3bff1211d4 :
diff --git a/main-loop.c b/main-loop.c
index d0d8fe4..7cdd969 100644
--- a/main-loop.c
+++ b/main-loop.c
@@ -346,6 +346,13 @@ static int os_host_main_loop_wait(uint32_t timeout)
return ret;
}
+ if (nfds >= 0) {
+ select_ret = select(nfds + 1, &rfds, &wfds, &xfds, &tv0);
+ if (select_ret != 0) {
+ timeout = 0;
+ }
+ }
+
g_main_context_prepare(context, &max_priority);
n_poll_fds = g_main_context_query(context, max_priority, &poll_timeout,
poll_fds, ARRAY_SIZE(poll_fds));
@@ -382,12 +389,6 @@ static int os_host_main_loop_wait(uint32_t timeout)
* improve socket latency.
*/
- if (nfds >= 0) {
- select_ret = select(nfds + 1, &rfds, &wfds, &xfds, &tv0);
- if (select_ret != 0) {
- timeout = 0;
- }
- }
return select_ret || g_poll_ret;
}
>> --
>> SUN OF A BEACH
>>
>>
>> On Wed, May 15, 2013 at 4:37 PM, Paolo Bonzini <address@hidden> wrote:
>>> Il 15/05/2013 03:38, TeLeMan ha scritto:
>>>> On Tue, May 14, 2013 at 7:55 PM, Paolo Bonzini <address@hidden> wrote:
>>>>> Il 14/05/2013 13:48, Paolo Bonzini ha scritto:
>>>>>> Il 14/05/2013 13:39, TeLeMan ha scritto:
>>>>>>> On Tue, May 14, 2013 at 6:46 PM, Paolo Bonzini <address@hidden> wrote:
>>>>>>>> Il 14/05/2013 12:24, TeLeMan ha scritto:
>>>>>>>>> On Tue, May 14, 2013 at 3:51 PM, Stefan Hajnoczi <address@hidden>
>>>>>>>>> wrote:
>>>>>>>>>> On Tue, May 14, 2013 at 12:02:24AM -0000, therock247uk wrote:
>>>>>>>>>>> just wondering as i just compiled the latest git and qemu goes into
>>>>>>>>>>> none
>>>>>>>>>>> responding mode when i try to do any networking stuff on guests
>>>>>>>>>>> (both
>>>>>>>>>>> linux and windows)
>>>>>>>>>>
>>>>>>>>>> Works for me on qemu.git/master on Linux:
>>>>>>>>>>
>>>>>>>>>> $ git rev-parse HEAD
>>>>>>>>>> b087143b4d010451208264b7c841436aafe1cbb1
>>>>>>>>>> $ x86_64-softmmu/qemu-system-x86_64 -m 1024 -enable-kvm -cpu host \
>>>>>>>>>> -drive if=virtio,cache=none,file=test.img
>>>>>>>>>>
>>>>>>>>>> Please include more information, like the QEMU command-line and
>>>>>>>>>> commit
>>>>>>>>>> ID.
>>>>>>>>>>
>>>>>>>>>> Stefan
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>> This regression occurs on the Windows host. SLIRP hangs in
>>>>>>>>> sorecvfrom().
>>>>>>>>
>>>>>>>> Can you bisect it?
>>>>>>>>
>>>>>>>> Paolo
>>>>>>>>
>>>>>>> The first break is the commit
>>>>>>> 5e3bc735d93dd23f074b5116fd11e1ad8cd4962f. But it need more packets
>>>>>>> than HEAD to reproduce this regression.
>>>>>>
>>>>>> Please check if this partial revert of that commit fixes it:
>>>>>
>>>>> Yeah, this should work... WSAEventSelect is edge-triggered and the
>>>>> event will not be signaled if the socket handler does not consume all
>>>>> the data in the socket buffer.
>>>>
>>>> Unfortunately, it does not work.
>>>
>>> Ok... as you can see the patch is just moving a block of code just
>>> before g_main_context_prepare(context, &max_priority).
>>>
>>> Can you please try doing the same on top of these six commits:
>>>
>>> 134a03e0b3d34b01b68107104c525c3bff1211d4
>>> cbff4b342b000a7642125dbdabf61113e05eee44
>>> 48ce11ff972c733afaed3e2a2613a2e56081ec92
>>> 8917c3bdba37d6fe4393db0fad3fabbde9530d6b
>>> a3e4b4a8091cc4fcf7cb619570c72c54c2d6a6e9
>>> 9cbaacf999b01b27dc3a22502705178057af66de
>>>
>>> Paolo
>>
>>
>
- [Qemu-devel] [PATCH v4 0/8] block: drive-backup live backup command, Stefan Hajnoczi, 2013/05/16
- [Qemu-devel] [PATCH v4 3/8] block: add drive-backup QMP command, Stefan Hajnoczi, 2013/05/16
- [Qemu-devel] [PATCH v4 7/8] blockdev: add Abort transaction, Stefan Hajnoczi, 2013/05/16
- [Qemu-devel] [PATCH v4 2/8] block: add basic backup support to block driver, Stefan Hajnoczi, 2013/05/16
- [Qemu-devel] [PATCH v4 5/8] blockdev: rename BlkTransactionStates to singular, Stefan Hajnoczi, 2013/05/16
- [Qemu-devel] [PATCH v4 4/8] qemu-iotests: add 055 drive-backup test case, Stefan Hajnoczi, 2013/05/16
- [Qemu-devel] [PATCH v4 1/8] block: add bdrv_add_before_write_notifier(), Stefan Hajnoczi, 2013/05/16
- [Qemu-devel] [PATCH v4 6/8] blockdev: add DriveBackup transaction, Stefan Hajnoczi, 2013/05/16
- [Qemu-devel] [PATCH v4 8/8] qemu-iotests: test 'drive-backup' transaction in 055, Stefan Hajnoczi, 2013/05/16