|
From: | Li Zhijian |
Subject: | Re: [Qemu-devel] [PULL 00/14] Net patches |
Date: | Thu, 10 Mar 2016 11:51:25 +0800 |
User-agent: | Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.6.0 |
On 03/10/2016 10:28 AM, Jason Wang wrote:
On 03/08/2016 05:54 PM, Peter Maydell wrote:On 8 March 2016 at 16:06, Zhang Chen <address@hidden> wrote:I found the reason for this problem is that unix_connect() have not connect to sock_path before iov_send(). It need time to establish connection. so can we fix it with usleep() like this: recv_sock = unix_connect(sock_path, NULL); g_assert_cmpint(recv_sock, !=, -1); + usleep(1000); ret = iov_send(send_sock[0], iov, 2, 0, sizeof(size) + sizeof(send_buf)); g_assert_cmpint(ret, ==, sizeof(send_buf) + sizeof(size)); close(send_sock[0]); ret = qemu_recv(recv_sock, &len, sizeof(len), 0);I would prefer it if we could find a way to fix this race reliably rather than just inserting a delay and hoping it is sufficient. Otherwise the test is likely to be unreliable if run on a heavily loaded or slow machine. thanks -- PMM+1 To make sure the connected socket to be proceeded before iov_send(), you could use some like qmp("{ 'execute' : 'query-status'}") before iov_send(). With this we are guaranteed that connected is setting to true before iov_send().
it seem works, but i don't know. Is this because that both qemu accepting the connection and qmp command are working under *iothread*, so that when the qemu command returns, we can guaranteed the connection is accepted ? Thanks Li Zhijian
[Prev in Thread] | Current Thread | [Next in Thread] |