From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:49969) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1adDgv-0002Su-LO for qemu-devel@nongnu.org; Tue, 08 Mar 2016 04:12:34 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1adDgs-0001xb-B2 for qemu-devel@nongnu.org; Tue, 08 Mar 2016 04:12:33 -0500 Received: from [59.151.112.132] (port=45438 helo=heian.cn.fujitsu.com) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1adDgp-0001xH-Cl for qemu-devel@nongnu.org; Tue, 08 Mar 2016 04:12:30 -0500 References: <1457320380-5111-1-git-send-email-jasowang@redhat.com> <56DE802F.2060502@redhat.com> <56DE8436.60304@cn.fujitsu.com> <56DE859B.8020404@redhat.com> <56DE9630.5020109@cn.fujitsu.com> From: Wen Congyang Message-ID: <56DE97BF.6010004@cn.fujitsu.com> Date: Tue, 8 Mar 2016 17:13:35 +0800 MIME-Version: 1.0 In-Reply-To: <56DE9630.5020109@cn.fujitsu.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [PULL 00/14] Net patches List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Zhang Chen , Jason Wang , Peter Maydell Cc: QEMU Developers On 03/08/2016 05:06 PM, Zhang Chen wrote: > > > On 03/08/2016 03:56 PM, Jason Wang wrote: >> >> On 03/08/2016 03:50 PM, Wen Congyang wrote: >>> On 03/08/2016 03:33 PM, Jason Wang wrote: >>>> On 03/08/2016 12:51 PM, Peter Maydell wrote: >>>>> On 7 March 2016 at 10:12, Jason Wang wrote: >>>>>> The following changes since commit 1464ad45cd6cdeb0b5c1a54d3d3791396e47e52f: >>>>>> >>>>>> Merge remote-tracking branch 'remotes/armbru/tags/pull-qapi-2016-03-04' into staging (2016-03-06 11:53:27 +0000) >>>>>> >>>>>> are available in the git repository at: >>>>>> >>>>>> https://github.com/jasowang/qemu.git tags/net-pull-request >>>>>> >>>>>> for you to fetch changes up to a2f2e45c6edbba9e1961056fa77c696208b40c8e: >>>>>> >>>>>> net: check packet payload length (2016-03-07 10:15:48 +0800) >>>>>> >>>>>> ---------------------------------------------------------------- >>>>>> >>>>>> - a new netfilter implementation: mirror >>>>>> - netfilter could be disabled and enabled through qom-set now >>>>>> - fix netfilter crash when specifiying wrong parameters >>>>>> - rocker switch now can allow user to specifiy world >>>>>> - fix OOB access for ne2000 >>>>> Hi; I'm afraid this makes "make check" hang for me (Linux, x86-64): >>>>> >>>>> TEST: tests/test-netfilter... (pid=26854) >>>>> /i386/netfilter/addremove_one: OK >>>>> /i386/netfilter/remove_netdev_one: OK >>>>> /i386/netfilter/addremove_multi: OK >>>>> /i386/netfilter/remove_netdev_multi: OK >>>>> PASS: tests/test-netfilter >>>>> TEST: tests/test-filter-mirror... (pid=26858) >>>>> /i386/netfilter/mirror: >>>>> >>>>> (consistently, every time I run make check, on the same test). >>>>> >>>>> thanks >>>>> -- PMM >>>> Sorry, it manages to pass on my machine before submitting the pull >>>> request. But when I re-try this several times, it fails. >>>> >>>> This probably means we have bug in mirror implementation. Chen and >>>> Congyang, please try to fix this bug and resubmit a new version of the >>>> patch. >>>> >>>> Will drop mirror from this pull request and submit a V2. >>> OK. what is the version of the kernel that you use? >> 4.2 but probably unrelated. Gdb shows the test wait at recv(). > > Hi~ Jason. > > I found the reason for this problem is that > unix_connect() have not connect to sock_path before iov_send(). After unix_connect() returns, the connection is established. qemu char device will call qemu_chr_accept() after the connection is established. If we send data before qemu_chr_accept() is called, the data will be dropped by qemu char device: static int tcp_chr_write(CharDriverState *chr, const uint8_t *buf, int len) { TCPCharDriver *s = chr->opaque; if (s->connected) { ... return ret; } else { /* XXX: indicate an error ? */ return len; } } We should wait some to let qemu_chr_accept() is called before sending data. Thanks Wen Congyang > 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); > > > >>> Thanks >>> Wen Congyang >>> >>>> Thanks >>>> >>>> >>>> . >>>> >>> >> >> >> . >> >