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 <quint...@redhat.com> > --- > 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 <pbonz...@redhat.com>