From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([140.186.70.92]:50652) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1RB63x-0005XX-WC for qemu-devel@nongnu.org; Tue, 04 Oct 2011 10:33:43 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1RB63w-0000GQ-Sc for qemu-devel@nongnu.org; Tue, 04 Oct 2011 10:33:41 -0400 Received: from mail-gy0-f173.google.com ([209.85.160.173]:42258) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1RB63w-0000GK-N0 for qemu-devel@nongnu.org; Tue, 04 Oct 2011 10:33:40 -0400 Received: by gye5 with SMTP id 5so656077gye.4 for ; Tue, 04 Oct 2011 07:33:40 -0700 (PDT) Message-ID: <4E8B1941.704@codemonkey.ws> Date: Tue, 04 Oct 2011 09:33:37 -0500 From: Anthony Liguori MIME-Version: 1.0 References: <657f6f30cd7f414dc4b807444667035b3e3c83c5.1316782367.git.quintela@redhat.com> In-Reply-To: <657f6f30cd7f414dc4b807444667035b3e3c83c5.1316782367.git.quintela@redhat.com> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [PATCH 22/23] migration: propagate error correctly List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Juan Quintela Cc: qemu-devel@nongnu.org On 09/23/2011 07:57 AM, Juan Quintela wrote: > unix and tcp outgoing migration have error values, but didn't returned > it. Make them return the error. Notice that EINPROGRESS& EWOULDBLOCK > are not considered errors as callwill be retry later. > > Signed-off-by: Juan Quintela Reviewed-by: Anthony Liguori Regards, Anthony Liguori > --- > migration-tcp.c | 20 +++++++++++--------- > migration-unix.c | 26 ++++++++++---------------- > 2 files changed, 21 insertions(+), 25 deletions(-) > > diff --git a/migration-tcp.c b/migration-tcp.c > index bd3aa3a..619df21 100644 > --- a/migration-tcp.c > +++ b/migration-tcp.c > @@ -90,26 +90,28 @@ int tcp_start_outgoing_migration(MigrationState *s, const char *host_port) > > s->fd = qemu_socket(PF_INET, SOCK_STREAM, 0); > if (s->fd == -1) { > - return -1; > + return -socket_error(); > } > > socket_set_nonblock(s->fd); > > do { > ret = connect(s->fd, (struct sockaddr *)&addr, sizeof(addr)); > - if (ret == -1) > - ret = -(socket_error()); > - > - if (ret == -EINPROGRESS || ret == -EWOULDBLOCK) > + if (ret == -1) { > + ret = -socket_error(); > + } > + if (ret == -EINPROGRESS || ret == -EWOULDBLOCK) { > qemu_set_fd_handler2(s->fd, NULL, NULL, tcp_wait_for_connect, s); > + return 0; > + } > } while (ret == -EINTR); > > - if (ret< 0&& ret != -EINPROGRESS&& ret != -EWOULDBLOCK) { > + if (ret< 0) { > DPRINTF("connect failed\n"); > migrate_fd_error(s); > - } else if (ret>= 0) > - migrate_fd_connect(s); > - > + return ret; > + } > + migrate_fd_connect(s); > return 0; > } > > diff --git a/migration-unix.c b/migration-unix.c > index 7205b25..428fe66 100644 > --- a/migration-unix.c > +++ b/migration-unix.c > @@ -89,35 +89,29 @@ int unix_start_outgoing_migration(MigrationState *s, const char *path) > s->fd = qemu_socket(PF_UNIX, SOCK_STREAM, 0); > if (s->fd< 0) { > DPRINTF("Unable to open socket"); > - goto err_after_socket; > + return -errno; > } > > socket_set_nonblock(s->fd); > > do { > ret = connect(s->fd, (struct sockaddr *)&addr, sizeof(addr)); > - if (ret == -1) > + if (ret == -1) { > ret = -errno; > - > - if (ret == -EINPROGRESS || ret == -EWOULDBLOCK) > + } > + if (ret == -EINPROGRESS || ret == -EWOULDBLOCK) { > qemu_set_fd_handler2(s->fd, NULL, NULL, unix_wait_for_connect, s); > + return 0; > + } > } while (ret == -EINTR); > > - if (ret< 0&& ret != -EINPROGRESS&& ret != -EWOULDBLOCK) { > + if (ret< 0) { > DPRINTF("connect failed\n"); > - goto err_after_open; > + migrate_fd_error(s); > + return ret; > } > - > - if (ret>= 0) > - migrate_fd_connect(s); > - > + migrate_fd_connect(s); > return 0; > - > -err_after_open: > - close(s->fd); > - > -err_after_socket: > - return -1; > } > > static void unix_accept_incoming_migration(void *opaque)