From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([140.186.70.92]:36327) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1R3Thn-0002Z0-Sv for qemu-devel@nongnu.org; Tue, 13 Sep 2011 10:11:24 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1R3Thi-0008IN-Sz for qemu-devel@nongnu.org; Tue, 13 Sep 2011 10:11:19 -0400 Received: from mx1.redhat.com ([209.132.183.28]:17094) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1R3Thi-0008I3-LZ for qemu-devel@nongnu.org; Tue, 13 Sep 2011 10:11:14 -0400 Message-ID: <4E6F652C.7080103@redhat.com> Date: Tue, 13 Sep 2011 16:14:04 +0200 From: Kevin Wolf MIME-Version: 1.0 References: <871uvquxi0.wl%morita.kazutaka@lab.ntt.co.jp> <1315555898-16957-1-git-send-email-pbonzini@redhat.com> In-Reply-To: <1315555898-16957-1-git-send-email-pbonzini@redhat.com> Content-Type: text/plain; charset=ISO-8859-15 Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [PATCH v2 09/12] sheepdog: move coroutine send/recv function to generic code List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Paolo Bonzini Cc: qemu-devel@nongnu.org, MORITA Kazutaka Am 09.09.2011 10:11, schrieb Paolo Bonzini: > Outside coroutines, avoid busy waiting on EAGAIN by temporarily > making the socket blocking. > > The API of qemu_recvv/qemu_sendv is slightly different from > do_readv/do_writev because they do not handle coroutines. It > returns the number of bytes written before encountering an > EAGAIN. The specificity of yielding on EAGAIN is entirely in > qemu-coroutine.c. > > Cc: MORITA Kazutaka > Signed-off-by: Paolo Bonzini > --- > Thanks for the review. I checked with qemu-io that all of > > readv -v 0 524288 (x8) > readv -v 0 262144 (x16) > readv -v 0 1024 (x4096) > readv -v 0 1536 (x2730) 1024 > readv -v 0 1024 512 (x2730) 1024 > > work and produce the same output, while previously they would fail. > Looks like it's hard to trigger the code just with qemu. > > block/sheepdog.c | 225 ++++++------------------------------------------------ > cutils.c | 103 +++++++++++++++++++++++++ > qemu-common.h | 3 + > qemu-coroutine.c | 70 +++++++++++++++++ > qemu-coroutine.h | 26 ++++++ Can we move the code somewhere else? This is not core coroutine infrastructure. I would suggest qemu_socket.h/qemu-sockets.c. Kevin