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 <morita.kazut...@lab.ntt.co.jp> > Signed-off-by: Paolo Bonzini <pbonz...@redhat.com> > --- > 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