Code movement only. Signed-off-by: Fabiano Rosas <faro...@suse.de> --- migration/multifd.c | 59 ------------------------------------------- migration/multifd.h | 2 ++ migration/socket.c | 61 ++++++++++++++++++++++++++++++++++++++++++++- 3 files changed, 62 insertions(+), 60 deletions(-)
diff --git a/migration/multifd.c b/migration/multifd.c index 2968649500..d82775ade9 100644 --- a/migration/multifd.c +++ b/migration/multifd.c @@ -45,65 +45,6 @@ typedef struct { uint64_t unused2[4]; /* Reserved for future use */ } __attribute__((packed)) MultiFDInit_t; -static int multifd_socket_send_setup(MultiFDSendParams *p, Error **errp) -{ - return 0; -} - -static void multifd_socket_send_cleanup(MultiFDSendParams *p, Error **errp) -{ - return; -} - -static int multifd_socket_send_prepare(MultiFDSendParams *p, Error **errp) -{ - MultiFDPages_t *pages = p->pages; - - for (int i = 0; i < p->normal_num; i++) { - p->iov[p->iovs_num].iov_base = pages->block->host + p->normal[i]; - p->iov[p->iovs_num].iov_len = p->page_size; - p->iovs_num++; - } - - p->next_packet_size = p->normal_num * p->page_size; - p->flags |= MULTIFD_FLAG_NOCOMP; - return 0; -} - -static int multifd_socket_recv_setup(MultiFDRecvParams *p, Error **errp) -{ - return 0; -} - -static void multifd_socket_recv_cleanup(MultiFDRecvParams *p) -{ -} - -static int multifd_socket_recv_pages(MultiFDRecvParams *p, Error **errp) -{ - uint32_t flags = p->flags & MULTIFD_FLAG_COMPRESSION_MASK; - - if (flags != MULTIFD_FLAG_NOCOMP) { - error_setg(errp, "multifd %u: flags received %x flags expected %x", - p->id, flags, MULTIFD_FLAG_NOCOMP); - return -1; - } - for (int i = 0; i < p->normal_num; i++) { - p->iov[i].iov_base = p->host + p->normal[i]; - p->iov[i].iov_len = p->page_size; - } - return qio_channel_readv_all(p->c, p->iov, p->normal_num, errp); -} - -static MultiFDMethods multifd_socket_ops = { - .send_setup = multifd_socket_send_setup, - .send_cleanup = multifd_socket_send_cleanup, - .send_prepare = multifd_socket_send_prepare, - .recv_setup = multifd_socket_recv_setup, - .recv_cleanup = multifd_socket_recv_cleanup, - .recv_pages = multifd_socket_recv_pages -}; - static MultiFDMethods *multifd_compression_ops[MULTIFD_COMPRESSION__MAX] = {0}; static MultiFDMethods *multifd_get_ops(void) diff --git a/migration/multifd.h b/migration/multifd.h index 4630baccd4..6261002524 100644 --- a/migration/multifd.h +++ b/migration/multifd.h @@ -204,6 +204,8 @@ typedef struct { int (*recv_pages)(MultiFDRecvParams *p, Error **errp); } MultiFDMethods; +extern MultiFDMethods multifd_socket_ops; + void multifd_register_compression(int method, MultiFDMethods *ops); #endif diff --git a/migration/socket.c b/migration/socket.c index 98e3ea1514..7e1371e598 100644 --- a/migration/socket.c +++ b/migration/socket.c @@ -16,12 +16,13 @@ #include "qemu/osdep.h" #include "qemu/cutils.h" - +#include "exec/ramblock.h" #include "qemu/error-report.h" #include "qapi/error.h" #include "channel.h" #include "socket.h" #include "migration.h" +#include "multifd.h" #include "qemu-file.h" #include "io/channel-socket.h" #include "io/net-listener.h" @@ -202,3 +203,61 @@ void socket_start_incoming_migration(SocketAddress *saddr, } } +static int multifd_socket_send_setup(MultiFDSendParams *p, Error **errp) +{ + return 0; +} + +static void multifd_socket_send_cleanup(MultiFDSendParams *p, Error **errp) +{ + return; +} + +static int multifd_socket_send_prepare(MultiFDSendParams *p, Error **errp) +{ + MultiFDPages_t *pages = p->pages; + + for (int i = 0; i < p->normal_num; i++) { + p->iov[p->iovs_num].iov_base = pages->block->host + p->normal[i]; + p->iov[p->iovs_num].iov_len = p->page_size; + p->iovs_num++; + } + + p->next_packet_size = p->normal_num * p->page_size; + p->flags |= MULTIFD_FLAG_NOCOMP; + return 0; +} + +static int multifd_socket_recv_setup(MultiFDRecvParams *p, Error **errp) +{ + return 0; +} + +static void multifd_socket_recv_cleanup(MultiFDRecvParams *p) +{ +} + +static int multifd_socket_recv_pages(MultiFDRecvParams *p, Error **errp) +{ + uint32_t flags = p->flags & MULTIFD_FLAG_COMPRESSION_MASK; + + if (flags != MULTIFD_FLAG_NOCOMP) { + error_setg(errp, "multifd %u: flags received %x flags expected %x", + p->id, flags, MULTIFD_FLAG_NOCOMP); + return -1; + } + for (int i = 0; i < p->normal_num; i++) { + p->iov[i].iov_base = p->host + p->normal[i]; + p->iov[i].iov_len = p->page_size; + } + return qio_channel_readv_all(p->c, p->iov, p->normal_num, errp); +} + +MultiFDMethods multifd_socket_ops = { + .send_setup = multifd_socket_send_setup, + .send_cleanup = multifd_socket_send_cleanup, + .send_prepare = multifd_socket_send_prepare, + .recv_setup = multifd_socket_recv_setup, + .recv_cleanup = multifd_socket_recv_cleanup, + .recv_pages = multifd_socket_recv_pages +}; -- 2.35.3