[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH v11 14/15] migration: Create pages structure for rec
From: |
Juan Quintela |
Subject: |
[Qemu-devel] [PATCH v11 14/15] migration: Create pages structure for reception |
Date: |
Fri, 16 Mar 2018 12:54:02 +0100 |
Signed-off-by: Juan Quintela <address@hidden>
---
migration/ram.c | 11 +++++++++++
1 file changed, 11 insertions(+)
diff --git a/migration/ram.c b/migration/ram.c
index 9919777a21..0132de6e02 100644
--- a/migration/ram.c
+++ b/migration/ram.c
@@ -775,6 +775,7 @@ static void multifd_send_page(RAMBlock *block, ram_addr_t
offset,
}
struct MultiFDRecvParams {
+ /* not changed */
uint8_t id;
char *name;
QemuThread thread;
@@ -782,8 +783,13 @@ struct MultiFDRecvParams {
QemuSemaphore sem;
QemuMutex mutex;
bool running;
+ /* protected by param mutex */
bool quit;
bool sync;
+ /* how many patckets has recv this channel */
+ uint32_t packets_recv;
+ MultiFDPages_t *pages;
+ bool done;
};
typedef struct MultiFDRecvParams MultiFDRecvParams;
@@ -840,6 +846,8 @@ int multifd_load_cleanup(Error **errp)
qemu_sem_destroy(&p->sem);
g_free(p->name);
p->name = NULL;
+ multifd_pages_clear(p->pages);
+ p->pages = NULL;
}
qemu_sem_destroy(&multifd_recv_state->sem_main);
g_free(multifd_recv_state->params);
@@ -914,6 +922,7 @@ static void *multifd_recv_thread(void *opaque)
int multifd_load_setup(void)
{
int thread_count;
+ uint32_t page_count = migrate_multifd_page_count();
uint8_t i;
if (!migrate_use_multifd()) {
@@ -924,6 +933,7 @@ int multifd_load_setup(void)
multifd_recv_state->params = g_new0(MultiFDRecvParams, thread_count);
atomic_set(&multifd_recv_state->count, 0);
qemu_sem_init(&multifd_recv_state->sem_main, 0);
+
for (i = 0; i < thread_count; i++) {
MultiFDRecvParams *p = &multifd_recv_state->params[i];
@@ -932,6 +942,7 @@ int multifd_load_setup(void)
p->quit = false;
p->id = i;
p->name = g_strdup_printf("multifdrecv_%d", i);
+ multifd_pages_init(&p->pages, page_count);
}
return 0;
}
--
2.14.3
- [Qemu-devel] [PATCH v11 03/15] migration: terminate_* can be called for other threads, (continued)
- [Qemu-devel] [PATCH v11 03/15] migration: terminate_* can be called for other threads, Juan Quintela, 2018/03/16
- [Qemu-devel] [PATCH v11 07/15] migration: Synchronize send threads, Juan Quintela, 2018/03/16
- [Qemu-devel] [PATCH v11 11/15] migration: Delay start of migration main routines, Juan Quintela, 2018/03/16
- [Qemu-devel] [PATCH v11 12/15] migration: Transmit initial package through the multifd channels, Juan Quintela, 2018/03/16
- [Qemu-devel] [PATCH v11 10/15] migration: Create multifd channels, Juan Quintela, 2018/03/16
- [Qemu-devel] [PATCH v11 13/15] migration: Create ram_multifd_page, Juan Quintela, 2018/03/16
- [Qemu-devel] [PATCH v11 14/15] migration: Create pages structure for reception,
Juan Quintela <=
- [Qemu-devel] [PATCH v11 15/15] [RFC] migration: Send pages through the multifd channels, Juan Quintela, 2018/03/16
- Re: [Qemu-devel] [RFC v11 00/15] mutifd, Daniel P . Berrangé, 2018/03/16