mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-05 00:33:55 -06:00
migration/colo: Replace QemuSemaphore with QemuEvent
colo_exit_sem and colo_incoming_sem represent one-shot events so they can be converted into QemuEvent, which is more lightweight. Signed-off-by: Akihiko Odaki <akihiko.odaki@daynix.com> Reviewed-by: Fabiano Rosas <farosas@suse.de> Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org> Link: https://lore.kernel.org/r/20250529-event-v5-8-53b285203794@daynix.com Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
parent
952691b7a6
commit
da926a8b9d
2 changed files with 13 additions and 13 deletions
|
@ -146,7 +146,7 @@ static void secondary_vm_do_failover(void)
|
|||
return;
|
||||
}
|
||||
/* Notify COLO incoming thread that failover work is finished */
|
||||
qemu_sem_post(&mis->colo_incoming_sem);
|
||||
qemu_event_set(&mis->colo_incoming_event);
|
||||
|
||||
/* For Secondary VM, jump to incoming co */
|
||||
if (mis->colo_incoming_co) {
|
||||
|
@ -195,7 +195,7 @@ static void primary_vm_do_failover(void)
|
|||
}
|
||||
|
||||
/* Notify COLO thread that failover work is finished */
|
||||
qemu_sem_post(&s->colo_exit_sem);
|
||||
qemu_event_set(&s->colo_exit_event);
|
||||
}
|
||||
|
||||
COLOMode get_colo_mode(void)
|
||||
|
@ -620,8 +620,8 @@ out:
|
|||
}
|
||||
|
||||
/* Hope this not to be too long to wait here */
|
||||
qemu_sem_wait(&s->colo_exit_sem);
|
||||
qemu_sem_destroy(&s->colo_exit_sem);
|
||||
qemu_event_wait(&s->colo_exit_event);
|
||||
qemu_event_destroy(&s->colo_exit_event);
|
||||
|
||||
/*
|
||||
* It is safe to unregister notifier after failover finished.
|
||||
|
@ -651,7 +651,7 @@ void migrate_start_colo_process(MigrationState *s)
|
|||
s->colo_delay_timer = timer_new_ms(QEMU_CLOCK_HOST,
|
||||
colo_checkpoint_notify_timer, NULL);
|
||||
|
||||
qemu_sem_init(&s->colo_exit_sem, 0);
|
||||
qemu_event_init(&s->colo_exit_event, false);
|
||||
colo_process_checkpoint(s);
|
||||
bql_lock();
|
||||
}
|
||||
|
@ -808,11 +808,11 @@ void colo_shutdown(void)
|
|||
case COLO_MODE_PRIMARY:
|
||||
s = migrate_get_current();
|
||||
qemu_event_set(&s->colo_checkpoint_event);
|
||||
qemu_sem_post(&s->colo_exit_sem);
|
||||
qemu_event_set(&s->colo_exit_event);
|
||||
break;
|
||||
case COLO_MODE_SECONDARY:
|
||||
mis = migration_incoming_get_current();
|
||||
qemu_sem_post(&mis->colo_incoming_sem);
|
||||
qemu_event_set(&mis->colo_incoming_event);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
|
@ -827,7 +827,7 @@ static void *colo_process_incoming_thread(void *opaque)
|
|||
Error *local_err = NULL;
|
||||
|
||||
rcu_register_thread();
|
||||
qemu_sem_init(&mis->colo_incoming_sem, 0);
|
||||
qemu_event_init(&mis->colo_incoming_event, false);
|
||||
|
||||
migrate_set_state(&mis->state, MIGRATION_STATUS_ACTIVE,
|
||||
MIGRATION_STATUS_COLO);
|
||||
|
@ -923,8 +923,8 @@ out:
|
|||
}
|
||||
|
||||
/* Hope this not to be too long to loop here */
|
||||
qemu_sem_wait(&mis->colo_incoming_sem);
|
||||
qemu_sem_destroy(&mis->colo_incoming_sem);
|
||||
qemu_event_wait(&mis->colo_incoming_event);
|
||||
qemu_event_destroy(&mis->colo_incoming_event);
|
||||
|
||||
rcu_unregister_thread();
|
||||
return NULL;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue