migration: Add a semaphore to count PONGs
This is mostly useless, but useful for us to know whether the main channel is correctly established without changing the migration protocol. Signed-off-by: Peter Xu <peterx@redhat.com> Reviewed-by: Juan Quintela <quintela@redhat.com> Signed-off-by: Juan Quintela <quintela@redhat.com>
This commit is contained in:
parent
fc063a7b8a
commit
b28fb58227
@ -3025,6 +3025,7 @@ retry:
|
||||
case MIG_RP_MSG_PONG:
|
||||
tmp32 = ldl_be_p(buf);
|
||||
trace_source_return_path_thread_pong(tmp32);
|
||||
qemu_sem_post(&ms->rp_state.rp_pong_acks);
|
||||
break;
|
||||
|
||||
case MIG_RP_MSG_REQ_PAGES:
|
||||
@ -4524,6 +4525,7 @@ static void migration_instance_finalize(Object *obj)
|
||||
qemu_sem_destroy(&ms->postcopy_pause_sem);
|
||||
qemu_sem_destroy(&ms->postcopy_pause_rp_sem);
|
||||
qemu_sem_destroy(&ms->rp_state.rp_sem);
|
||||
qemu_sem_destroy(&ms->rp_state.rp_pong_acks);
|
||||
qemu_sem_destroy(&ms->postcopy_qemufile_src_sem);
|
||||
error_free(ms->error);
|
||||
}
|
||||
@ -4570,6 +4572,7 @@ static void migration_instance_init(Object *obj)
|
||||
qemu_sem_init(&ms->postcopy_pause_sem, 0);
|
||||
qemu_sem_init(&ms->postcopy_pause_rp_sem, 0);
|
||||
qemu_sem_init(&ms->rp_state.rp_sem, 0);
|
||||
qemu_sem_init(&ms->rp_state.rp_pong_acks, 0);
|
||||
qemu_sem_init(&ms->rate_limit_sem, 0);
|
||||
qemu_sem_init(&ms->wait_unplug_sem, 0);
|
||||
qemu_sem_init(&ms->postcopy_qemufile_src_sem, 0);
|
||||
|
@ -276,6 +276,12 @@ struct MigrationState {
|
||||
*/
|
||||
bool rp_thread_created;
|
||||
QemuSemaphore rp_sem;
|
||||
/*
|
||||
* We post to this when we got one PONG from dest. So far it's an
|
||||
* easy way to know the main channel has successfully established
|
||||
* on dest QEMU.
|
||||
*/
|
||||
QemuSemaphore rp_pong_acks;
|
||||
} rp_state;
|
||||
|
||||
double mbps;
|
||||
|
Loading…
Reference in New Issue
Block a user