All of lore.kernel.org
 help / color / mirror / Atom feed
From: Anthony Liguori <anthony@codemonkey.ws>
To: Amit Shah <amit.shah@redhat.com>
Cc: Paul Brook <paul@codesourcery.com>,
	Juan Quintela <quintela@redhat.com>,
	qemu list <qemu-devel@nongnu.org>,
	Gerd Hoffmann <kraxel@redhat.com>
Subject: [Qemu-devel] Re: [PATCH v7 3/6] char: Let writers know how much data was written in case of errors
Date: Wed, 05 May 2010 08:15:19 -0500	[thread overview]
Message-ID: <4BE16F67.6070901@codemonkey.ws> (raw)
In-Reply-To: <1273009170-17530-4-git-send-email-amit.shah@redhat.com>

On 05/04/2010 04:39 PM, Amit Shah wrote:
> On writing errors, we just returned -1 even if some bytes were already
> written out. Ensure we return the number of bytes written before we
> return the error (on a subsequent call to qemu_chr_write()).
>
> Signed-off-by: Amit Shah<amit.shah@redhat.com>
> ---
>   qemu-char.c |   12 +++++++++++-
>   1 files changed, 11 insertions(+), 1 deletions(-)
>
> diff --git a/qemu-char.c b/qemu-char.c
> index 76ad12c..decf687 100644
> --- a/qemu-char.c
> +++ b/qemu-char.c
> @@ -507,6 +507,9 @@ int send_all(int fd, const void *buf, int len1)
>       while (len>  0) {
>           ret = send(fd, buf, len, 0);
>           if (ret<  0) {
> +            if (len1 - len) {
> +                return len1 - len;
> +            }
>               errno = WSAGetLastError();
>               if (errno != WSAEWOULDBLOCK) {
>                   return -1;
> @@ -531,8 +534,15 @@ static int unix_write(int fd, const uint8_t *buf, int len1)
>       while (len>  0) {
>           ret = write(fd, buf, len);
>           if (ret<  0) {
> -            if (errno != EINTR&&  errno != EAGAIN)
> +            if (errno == EINTR) {
> +                continue;
> +            }
> +            if (len1 - len) {
> +                return len1 - len;
> +            }
> +            if (errno != EAGAIN) {
>                   return -1;
> +            }
>           } else if (ret == 0) {
>               break;
>           } else {
>    

This will break lots of things.  The contract for send_all and 
unix_write is that the transmit all data.

Regards,

Anthony Liguori

  parent reply	other threads:[~2010-05-05 13:15 UTC|newest]

Thread overview: 28+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-05-04 21:39 [Qemu-devel] [PATCH v7 0/6] Amit Shah
2010-05-04 21:39 ` [Qemu-devel] [PATCH v7 1/6] virtio-console: Factor out common init between console and generic ports Amit Shah
2010-05-04 21:39   ` [Qemu-devel] [PATCH v7 2/6] char: Add a QemuChrHandlers struct to initialise chardev handlers Amit Shah
2010-05-04 21:39     ` [Qemu-devel] [PATCH v7 3/6] char: Let writers know how much data was written in case of errors Amit Shah
2010-05-04 21:39       ` [Qemu-devel] [PATCH v7 4/6] char: Add qemu_chr_write_nb() for nonblocking writes Amit Shah
2010-05-04 21:39         ` [Qemu-devel] [PATCH v7 5/6] char: unix/tcp: Add a non-blocking write handler Amit Shah
2010-05-04 21:39           ` [Qemu-devel] [PATCH v7 6/6] virtio-console: Throttle virtio-serial-bus if we can't consume any more guest data Amit Shah
2010-05-05 13:16         ` [Qemu-devel] Re: [PATCH v7 4/6] char: Add qemu_chr_write_nb() for nonblocking writes Anthony Liguori
2010-05-05 13:22           ` Amit Shah
2010-05-05 13:34           ` Paul Brook
2010-05-05 13:53             ` Anthony Liguori
2010-05-05 14:10               ` Paul Brook
2010-05-05 18:43               ` Gerd Hoffmann
2010-05-05 18:49                 ` Anthony Liguori
2010-05-05 19:16                   ` Gerd Hoffmann
2010-05-05 19:33                     ` Anthony Liguori
2010-05-06  7:11                       ` Gerd Hoffmann
2010-05-05 18:40           ` Gerd Hoffmann
2010-05-05 18:48             ` Anthony Liguori
2010-05-05 13:15       ` Anthony Liguori [this message]
2010-05-05 13:23         ` [Qemu-devel] Re: [PATCH v7 3/6] char: Let writers know how much data was written in case of errors Amit Shah
2010-05-05 13:54           ` Anthony Liguori
2010-05-05 14:06             ` Amit Shah
2010-05-05 13:13     ` [Qemu-devel] Re: [PATCH v7 2/6] char: Add a QemuChrHandlers struct to initialise chardev handlers Anthony Liguori
2010-05-05 13:25       ` Amit Shah
2010-05-05 13:59         ` Anthony Liguori
2010-05-04 21:41 ` [Qemu-devel] Re: [PATCH v7 0/6] char: non-blocking writes, virtio-console flow control Amit Shah
2010-05-05 11:18 ` [Qemu-devel] Re: [PATCH v7 0/6] Juan Quintela

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4BE16F67.6070901@codemonkey.ws \
    --to=anthony@codemonkey.ws \
    --cc=amit.shah@redhat.com \
    --cc=kraxel@redhat.com \
    --cc=paul@codesourcery.com \
    --cc=qemu-devel@nongnu.org \
    --cc=quintela@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.