From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:46772) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1X4oZU-0005eU-Eh for qemu-devel@nongnu.org; Wed, 09 Jul 2014 05:54:01 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1X4oZL-00015V-72 for qemu-devel@nongnu.org; Wed, 09 Jul 2014 05:53:52 -0400 Received: from mail-qc0-x231.google.com ([2607:f8b0:400d:c01::231]:56626) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1X4oZL-00015M-2t for qemu-devel@nongnu.org; Wed, 09 Jul 2014 05:53:43 -0400 Received: by mail-qc0-f177.google.com with SMTP id r5so6271869qcx.22 for ; Wed, 09 Jul 2014 02:53:42 -0700 (PDT) Received: from yakj.usersys.redhat.com (net-2-35-201-190.cust.vodafonedsl.it. [2.35.201.190]) by mx.google.com with ESMTPSA id j97sm31669122qgd.37.2014.07.09.02.53.40 for (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 09 Jul 2014 02:53:42 -0700 (PDT) Sender: Paolo Bonzini From: Paolo Bonzini Date: Wed, 9 Jul 2014 11:53:09 +0200 Message-Id: <1404899590-24973-10-git-send-email-pbonzini@redhat.com> In-Reply-To: <1404899590-24973-1-git-send-email-pbonzini@redhat.com> References: <1404899590-24973-1-git-send-email-pbonzini@redhat.com> Subject: [Qemu-devel] [PATCH 09/10] qemu-coroutine-io: fix for Win32 List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Signed-off-by: Paolo Bonzini --- nbd.c | 2 +- qemu-coroutine-io.c | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/nbd.c b/nbd.c index e7d1cee..5c28f71 100644 --- a/nbd.c +++ b/nbd.c @@ -156,7 +156,7 @@ ssize_t nbd_wr_sync(int fd, void *buffer, size_t size, bool do_read) err = socket_error(); /* recoverable error */ - if (err == EINTR || (offset > 0 && err == EAGAIN)) { + if (err == EINTR || (offset > 0 && (err == EAGAIN || err == EWOULDBLOCK))) { continue; } diff --git a/qemu-coroutine-io.c b/qemu-coroutine-io.c index 054ca70..d404926 100644 --- a/qemu-coroutine-io.c +++ b/qemu-coroutine-io.c @@ -34,13 +34,15 @@ qemu_co_sendv_recvv(int sockfd, struct iovec *iov, unsigned iov_cnt, { size_t done = 0; ssize_t ret; + int err; while (done < bytes) { ret = iov_send_recv(sockfd, iov, iov_cnt, offset + done, bytes - done, do_send); if (ret > 0) { done += ret; } else if (ret < 0) { - if (errno == EAGAIN) { + err = socket_error(); + if (err == EAGAIN || err == EWOULDBLOCK) { qemu_coroutine_yield(); } else if (done == 0) { return -1; -- 1.9.3