From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([208.118.235.92]:57526) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TF4gn-0003bR-9P for qemu-devel@nongnu.org; Fri, 21 Sep 2012 10:58:51 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1TF4gm-0002Ah-0l for qemu-devel@nongnu.org; Fri, 21 Sep 2012 10:58:45 -0400 Received: from mail-pb0-f45.google.com ([209.85.160.45]:44117) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TF4gl-0002AT-NK for qemu-devel@nongnu.org; Fri, 21 Sep 2012 10:58:43 -0400 Received: by pbbrp12 with SMTP id rp12so7864759pbb.4 for ; Fri, 21 Sep 2012 07:58:43 -0700 (PDT) Sender: Paolo Bonzini Message-ID: <505C809D.7030907@redhat.com> Date: Fri, 21 Sep 2012 16:58:37 +0200 From: Paolo Bonzini MIME-Version: 1.0 References: <1348236500-2565-1-git-send-email-quintela@redhat.com> <1348236500-2565-9-git-send-email-quintela@redhat.com> In-Reply-To: <1348236500-2565-9-git-send-email-quintela@redhat.com> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [PATCH 08/14] migration: remove unfreeze logic List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Juan Quintela Cc: qemu-devel@nongnu.org Il 21/09/2012 16:08, Juan Quintela ha scritto: > Now that we have a thread, and blocking writes, we don't need it. > > Signed-off-by: Juan Quintela > --- > buffered_file.c | 24 +----------------------- > migration.c | 23 ----------------------- > migration.h | 1 - > 3 files changed, 1 insertion(+), 47 deletions(-) > > diff --git a/buffered_file.c b/buffered_file.c > index 6c3d057..2c9859b 100644 > --- a/buffered_file.c > +++ b/buffered_file.c > @@ -26,7 +26,6 @@ typedef struct QEMUFileBuffered > { > MigrationState *migration_state; > QEMUFile *file; > - int freeze_output; > size_t bytes_xfer; > size_t xfer_limit; > uint8_t *buffer; > @@ -70,13 +69,6 @@ static int buffered_flush(QEMUFileBuffered *s) > > ret = migrate_fd_put_buffer(s->migration_state, s->buffer + offset, > s->buffer_size - offset); > - if (ret == -EAGAIN) { > - DPRINTF("backend not ready, freezing\n"); > - ret = 0; > - s->freeze_output = 1; > - break; > - } > - > if (ret <= 0) { > DPRINTF("error flushing data, %zd\n", ret); > break; > @@ -110,9 +102,6 @@ static int buffered_put_buffer(void *opaque, const uint8_t *buf, int64_t pos, in > return error; > } > > - DPRINTF("unfreezing output\n"); > - s->freeze_output = 0; > - > if (size > 0) { > DPRINTF("buffering %d bytes\n", size - offset); > buffered_append(s, buf, size); > @@ -126,7 +115,7 @@ static int buffered_put_buffer(void *opaque, const uint8_t *buf, int64_t pos, in > > if (pos == 0 && size == 0) { > DPRINTF("file is ready\n"); > - if (!s->freeze_output && s->bytes_xfer < s->xfer_limit) { > + if (s->bytes_xfer < s->xfer_limit) { > DPRINTF("notifying client\n"); > migrate_fd_put_ready(s->migration_state); > } > @@ -148,12 +137,6 @@ static int buffered_close(void *opaque) > if (ret < 0) { > break; > } > - if (s->freeze_output) { > - ret = migrate_fd_wait_for_unfreeze(s->migration_state); > - if (ret < 0) { > - break; > - } > - } > } > > ret2 = migrate_fd_close(s->migration_state); > @@ -180,8 +163,6 @@ static int buffered_rate_limit(void *opaque) > if (ret) { > return ret; > } > - if (s->freeze_output) > - return 1; > > if (s->bytes_xfer > s->xfer_limit) > return 1; > @@ -226,9 +207,6 @@ static void *buffered_file_thread(void *opaque) > if (s->migration_state->complete) { > break; > } > - if (s->freeze_output) { > - continue; > - } > if (current_time >= expire_time) { > s->bytes_xfer = 0; > expire_time = current_time + BUFFER_DELAY; > diff --git a/migration.c b/migration.c > index a8b2f4a..29ee710 100644 > --- a/migration.c > +++ b/migration.c > @@ -367,29 +367,6 @@ static void migrate_fd_cancel(MigrationState *s) > migrate_fd_cleanup(s); > } > > -int migrate_fd_wait_for_unfreeze(MigrationState *s) > -{ > - int ret; > - > - DPRINTF("wait for unfreeze\n"); > - if (s->state != MIG_STATE_ACTIVE) > - return -EINVAL; > - > - do { > - fd_set wfds; > - > - FD_ZERO(&wfds); > - FD_SET(s->fd, &wfds); > - > - ret = select(s->fd + 1, NULL, &wfds, NULL, NULL); > - } while (ret == -1 && (s->get_error(s)) == EINTR); > - > - if (ret == -1) { > - return -s->get_error(s); > - } > - return 0; > -} > - > int migrate_fd_close(MigrationState *s) > { > return s->close(s); > diff --git a/migration.h b/migration.h > index a63c5d5..505f792 100644 > --- a/migration.h > +++ b/migration.h > @@ -82,7 +82,6 @@ void migrate_fd_connect(MigrationState *s); > ssize_t migrate_fd_put_buffer(MigrationState *s, const void *data, > size_t size); > void migrate_fd_put_ready(MigrationState *s); > -int migrate_fd_wait_for_unfreeze(MigrationState *s); > int migrate_fd_close(MigrationState *s); > > void add_migration_state_change_notifier(Notifier *notify); > Reviewed-by: Paolo Bonzini