[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PULL 04/19] migration/multifd: call multifd_send_sync_main
From: |
Juan Quintela |
Subject: |
[Qemu-devel] [PULL 04/19] migration/multifd: call multifd_send_sync_main when sending RAM_SAVE_FLAG_EOS |
Date: |
Fri, 12 Jul 2019 16:31:52 +0200 |
From: Wei Yang <address@hidden>
On receiving RAM_SAVE_FLAG_EOS, multifd_recv_sync_main() is called to
synchronize receive threads. Current synchronization mechanism is to wait
for each channel's sem_sync semaphore. This semaphore is triggered by a
packet with MULTIFD_FLAG_SYNC flag. While in current implementation, we
don't do multifd_send_sync_main() to send such packet when
blk_mig_bulk_active() is true.
This will leads to the receive threads won't notify
multifd_recv_sync_main() by sem_sync. And multifd_recv_sync_main() will
always wait there.
[Note]: normal migration test works, while didn't test the
blk_mig_bulk_active() case. Since not sure how to produce this
situation.
Signed-off-by: Wei Yang <address@hidden>
Reviewed-by: Juan Quintela <address@hidden>
Message-Id: <address@hidden>
Signed-off-by: Juan Quintela <address@hidden>
---
migration/ram.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/migration/ram.c b/migration/ram.c
index 908517fc2b..74c9306c78 100644
--- a/migration/ram.c
+++ b/migration/ram.c
@@ -3466,8 +3466,8 @@ static int ram_save_iterate(QEMUFile *f, void *opaque)
*/
ram_control_after_iterate(f, RAM_CONTROL_ROUND);
- multifd_send_sync_main();
out:
+ multifd_send_sync_main();
qemu_put_be64(f, RAM_SAVE_FLAG_EOS);
qemu_fflush(f);
ram_counters.transferred += 8;
--
2.21.0
- Re: [Qemu-devel] [PULL 00/19] Migration patches, (continued)
- Re: [Qemu-devel] [PULL 00/19] Migration patches, Christian Borntraeger, 2019/07/11
- Re: [Qemu-devel] [PULL 00/19] Migration patches, no-reply, 2019/07/11
- Re: [Qemu-devel] [PULL 00/19] Migration patches, no-reply, 2019/07/12
- [Qemu-devel] [PULL 00/19] Migration patches, Juan Quintela, 2019/07/12
- [Qemu-devel] [PULL 01/19] migration: fix multifd_recv event typo, Juan Quintela, 2019/07/12
- [Qemu-devel] [PULL 02/19] migration-test: rename parameter to parameter_int, Juan Quintela, 2019/07/12
- [Qemu-devel] [PULL 03/19] migration-test: Add migration multifd test, Juan Quintela, 2019/07/12
- [Qemu-devel] [PULL 05/19] migration/xbzrle: update cache and current_data in one place, Juan Quintela, 2019/07/12
- [Qemu-devel] [PULL 06/19] cutils: remove one unnecessary pointer operation, Juan Quintela, 2019/07/12
- [Qemu-devel] [PULL 04/19] migration/multifd: call multifd_send_sync_main when sending RAM_SAVE_FLAG_EOS,
Juan Quintela <=
- [Qemu-devel] [PULL 07/19] migration/multifd: sync packet_num after all thread are done, Juan Quintela, 2019/07/12
- [Qemu-devel] [PULL 09/19] migration: No need to take rcu during sync_dirty_bitmap, Juan Quintela, 2019/07/12
- [Qemu-devel] [PULL 08/19] migration/ram.c: reset complete_round when we gets a queued page, Juan Quintela, 2019/07/12
- [Qemu-devel] [PULL 10/19] memory: Don't set migration bitmap when without migration, Juan Quintela, 2019/07/12
- [Qemu-devel] [PULL 11/19] bitmap: Add bitmap_copy_with_{src|dst}_offset(), Juan Quintela, 2019/07/12
- [Qemu-devel] [PULL 12/19] memory: Pass mr into snapshot_and_clear_dirty, Juan Quintela, 2019/07/12
- [Qemu-devel] [PULL 13/19] memory: Introduce memory listener hook log_clear(), Juan Quintela, 2019/07/12
- [Qemu-devel] [PULL 14/19] kvm: Update comments for sync_dirty_bitmap, Juan Quintela, 2019/07/12
- [Qemu-devel] [PULL 15/19] kvm: Persistent per kvmslot dirty bitmap, Juan Quintela, 2019/07/12
- [Qemu-devel] [PULL 16/19] kvm: Introduce slots lock for memory listener, Juan Quintela, 2019/07/12