提交 dd217b87 编写于 作者: J Juan Quintela

migration: make writes blocking

Move all the writes to the migration_thread, and make writings
blocking.  Notice that are still using the iothread for everything
that we do.
Signed-off-by: NJuan Quintela <quintela@redhat.com>
上级 766bd176
......@@ -113,11 +113,6 @@ int64_t qemu_file_set_rate_limit(QEMUFile *f, int64_t new_rate);
int64_t qemu_file_get_rate_limit(QEMUFile *f);
int qemu_file_get_error(QEMUFile *f);
/* Try to send any outstanding data. This function is useful when output is
* halted due to rate limiting or EAGAIN errors occur as it can be used to
* resume output. */
int qemu_file_put_notify(QEMUFile *f);
static inline void qemu_put_be64s(QEMUFile *f, const uint64_t *pv)
{
qemu_put_be64(f, *pv);
......
......@@ -69,7 +69,6 @@ void exec_start_outgoing_migration(MigrationState *s, const char *command, Error
s->fd = fileno(f);
assert(s->fd != -1);
socket_set_nonblock(s->fd);
s->opaque = qemu_popen(f, "w");
......
......@@ -75,7 +75,6 @@ void fd_start_outgoing_migration(MigrationState *s, const char *fdname, Error **
return;
}
fcntl(s->fd, F_SETFL, O_NONBLOCK);
s->get_error = fd_errno;
s->write = fd_write;
s->close = fd_close;
......
......@@ -60,6 +60,7 @@ static void tcp_wait_for_connect(int fd, void *opaque)
} else {
DPRINTF("migrate connect success\n");
s->fd = fd;
socket_set_block(s->fd);
migrate_fd_connect(s);
}
}
......
......@@ -60,6 +60,7 @@ static void unix_wait_for_connect(int fd, void *opaque)
} else {
DPRINTF("migrate connect success\n");
s->fd = fd;
socket_set_block(s->fd);
migrate_fd_connect(s);
}
}
......
......@@ -297,18 +297,6 @@ static void migrate_fd_completed(MigrationState *s)
notifier_list_notify(&migration_state_notifiers, s);
}
static void migrate_fd_put_notify(void *opaque)
{
MigrationState *s = opaque;
int ret;
qemu_set_fd_handler2(s->fd, NULL, NULL, NULL, NULL);
ret = qemu_file_put_notify(s->file);
if (ret) {
migrate_fd_error(s);
}
}
ssize_t migrate_fd_put_buffer(MigrationState *s, const void *data,
size_t size)
{
......@@ -325,10 +313,6 @@ ssize_t migrate_fd_put_buffer(MigrationState *s, const void *data,
if (ret == -1)
ret = -(s->get_error(s));
if (ret == -EAGAIN) {
qemu_set_fd_handler2(s->fd, NULL, NULL, migrate_fd_put_notify, s);
}
return ret;
}
......@@ -425,7 +409,6 @@ int migrate_fd_close(MigrationState *s)
{
int rc = 0;
if (s->fd != -1) {
qemu_set_fd_handler2(s->fd, NULL, NULL, NULL, NULL);
rc = s->close(s);
s->fd = -1;
}
......
......@@ -555,11 +555,6 @@ int qemu_fclose(QEMUFile *f)
return ret;
}
int qemu_file_put_notify(QEMUFile *f)
{
return f->ops->put_buffer(f->opaque, NULL, 0, 0);
}
void qemu_put_buffer(QEMUFile *f, const uint8_t *buf, int size)
{
int l;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册