[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH v15 05/12] migration: Multifd channels always wait o
From: |
Juan Quintela |
Subject: |
[Qemu-devel] [PATCH v15 05/12] migration: Multifd channels always wait on the sem |
Date: |
Thu, 21 Jun 2018 01:28:44 +0200 |
Either for quit, sync or packet, we first wake them.
Signed-off-by: Juan Quintela <address@hidden>
Reviewed-by: Dr. David Alan Gilbert <address@hidden>
---
migration/ram.c | 13 +++++++++++--
1 file changed, 11 insertions(+), 2 deletions(-)
diff --git a/migration/ram.c b/migration/ram.c
index d7f8b0d989..617da76a2e 100644
--- a/migration/ram.c
+++ b/migration/ram.c
@@ -875,6 +875,7 @@ static void *multifd_send_thread(void *opaque)
p->num_packets = 1;
while (true) {
+ qemu_sem_wait(&p->sem);
qemu_mutex_lock(&p->mutex);
multifd_send_fill_packet(p);
if (p->quit) {
@@ -882,7 +883,9 @@ static void *multifd_send_thread(void *opaque)
break;
}
qemu_mutex_unlock(&p->mutex);
- qemu_sem_wait(&p->sem);
+ /* this is impossible */
+ error_setg(&local_err, "multifd_send_thread: Unknown command");
+ break;
}
out:
@@ -1033,6 +1036,7 @@ static void *multifd_recv_thread(void *opaque)
trace_multifd_recv_thread_start(p->id);
while (true) {
+ qemu_sem_wait(&p->sem);
qemu_mutex_lock(&p->mutex);
if (false) {
/* ToDo: Packet reception goes here */
@@ -1047,9 +1051,14 @@ static void *multifd_recv_thread(void *opaque)
break;
}
qemu_mutex_unlock(&p->mutex);
- qemu_sem_wait(&p->sem);
+ /* this is impossible */
+ error_setg(&local_err, "multifd_recv_thread: Unknown command");
+ break;
}
+ if (local_err) {
+ multifd_recv_terminate_threads(local_err);
+ }
qemu_mutex_lock(&p->mutex);
p->running = false;
qemu_mutex_unlock(&p->mutex);
--
2.17.1
- [Qemu-devel] [PATCH v15 00/12] Multifd, Juan Quintela, 2018/06/20
- [Qemu-devel] [PATCH v15 01/12] migration: Create multipage support, Juan Quintela, 2018/06/20
- [Qemu-devel] [PATCH v15 02/12] migration: Create multifd packet, Juan Quintela, 2018/06/20
- [Qemu-devel] [PATCH v15 03/12] migration: Add multifd traces for start/end thread, Juan Quintela, 2018/06/20
- [Qemu-devel] [PATCH v15 04/12] migration: Calculate transferred ram correctly, Juan Quintela, 2018/06/20
- [Qemu-devel] [PATCH v15 06/12] migration: Add block where to send/receive packets, Juan Quintela, 2018/06/20
- [Qemu-devel] [PATCH v15 09/12] migration: Start sending messages, Juan Quintela, 2018/06/20
- [Qemu-devel] [PATCH v15 08/12] migration: Create ram_save_multifd_page, Juan Quintela, 2018/06/20
- [Qemu-devel] [PATCH v15 12/12] migration: Stop sending whole pages through main channel, Juan Quintela, 2018/06/20
- [Qemu-devel] [PATCH v15 05/12] migration: Multifd channels always wait on the sem,
Juan Quintela <=
- [Qemu-devel] [PATCH v15 07/12] migration: Synchronize multifd threads with main thread, Juan Quintela, 2018/06/20
- [Qemu-devel] [PATCH v15 10/12] migration: Wait for blocking IO, Juan Quintela, 2018/06/20
- [Qemu-devel] [PATCH v15 11/12] migration: Remove not needed semaphore and quit, Juan Quintela, 2018/06/20
- Re: [Qemu-devel] [PATCH v15 00/12] Multifd, no-reply, 2018/06/22