All three events are shared between precopy and postcopy, rather than
precopy specific.
For example, both precopy and postcopy will go through a SETUP process.
Meanwhile, both FAILED and DONE notifiers will be notified for either
precopy or postcopy on completions / failures.
Rename them to make them match what they do, and shorter.
Reviewed-by: Fabiano Rosas <farosas@suse.de>
Acked-by: Stefan Hajnoczi <stefanha@redhat.com>
Signed-off-by: Peter Xu <peterx@redhat.com>
---
include/migration/misc.h | 18 +++++++-----------
hw/intc/arm_gicv3_kvm.c | 2 +-
hw/net/virtio-net.c | 4 ++--
hw/vfio/cpr-legacy.c | 2 +-
hw/vfio/cpr.c | 8 ++++----
hw/vfio/migration.c | 4 ++--
migration/cpr-exec.c | 6 +++---
migration/migration.c | 8 ++++----
net/vhost-vdpa.c | 4 ++--
ui/spice-core.c | 6 +++---
10 files changed, 29 insertions(+), 33 deletions(-)
diff --git a/include/migration/misc.h b/include/migration/misc.h
index 1cd6cfd7f7..3159a5e53c 100644
--- a/include/migration/misc.h
+++ b/include/migration/misc.h
@@ -62,19 +62,15 @@ bool migration_thread_is_self(void);
/*
* Notifiers may receive events in any of the following orders:
*
- * - MIG_EVENT_PRECOPY_SETUP [-> MIG_EVENT_POSTCOPY_START]
- * -> MIG_EVENT_PRECOPY_DONE
- *
- * - MIG_EVENT_PRECOPY_SETUP [-> MIG_EVENT_POSTCOPY_START]
- * -> MIG_EVENT_PRECOPY_FAILED
- *
- * - MIG_EVENT_PRECOPY_FAILED
+ * - MIG_EVENT_SETUP [-> MIG_EVENT_POSTCOPY_START] -> MIG_EVENT_DONE
+ * - MIG_EVENT_SETUP [-> MIG_EVENT_POSTCOPY_START] -> MIG_EVENT_FAILED
+ * - MIG_EVENT_FAILED
*/
typedef enum MigrationEventType {
- MIG_EVENT_PRECOPY_SETUP,
- MIG_EVENT_PRECOPY_DONE,
- MIG_EVENT_PRECOPY_FAILED,
+ MIG_EVENT_SETUP,
MIG_EVENT_POSTCOPY_START,
+ MIG_EVENT_DONE,
+ MIG_EVENT_FAILED,
MIG_EVENT_MAX
} MigrationEventType;
@@ -84,7 +80,7 @@ typedef struct MigrationEvent {
/*
* A MigrationNotifyFunc may return an error code and an Error object,
- * but only when @e->type is MIG_EVENT_PRECOPY_SETUP. The code is an int
+ * but only when @e->type is MIG_EVENT_SETUP. The code is an int
* to allow for different failure modes and recovery actions.
*/
typedef int (*MigrationNotifyFunc)(NotifierWithReturn *notify,
diff --git a/hw/intc/arm_gicv3_kvm.c b/hw/intc/arm_gicv3_kvm.c
index 6f311e37ef..fddeefa26f 100644
--- a/hw/intc/arm_gicv3_kvm.c
+++ b/hw/intc/arm_gicv3_kvm.c
@@ -774,7 +774,7 @@ static void vm_change_state_handler(void *opaque, bool running,
static int kvm_arm_gicv3_notifier(NotifierWithReturn *notifier,
MigrationEvent *e, Error **errp)
{
- if (e->type == MIG_EVENT_PRECOPY_DONE) {
+ if (e->type == MIG_EVENT_DONE) {
GICv3State *s = container_of(notifier, GICv3State, cpr_notifier);
return kvm_device_access(s->dev_fd, KVM_DEV_ARM_VGIC_GRP_CTRL,
KVM_DEV_ARM_VGIC_SAVE_PENDING_TABLES,
diff --git a/hw/net/virtio-net.c b/hw/net/virtio-net.c
index 317f1ad23b..3e2dc30da6 100644
--- a/hw/net/virtio-net.c
+++ b/hw/net/virtio-net.c
@@ -3786,7 +3786,7 @@ static void virtio_net_handle_migration_primary(VirtIONet *n, MigrationEvent *e)
should_be_hidden = qatomic_read(&n->failover_primary_hidden);
- if (e->type == MIG_EVENT_PRECOPY_SETUP && !should_be_hidden) {
+ if (e->type == MIG_EVENT_SETUP && !should_be_hidden) {
if (failover_unplug_primary(n, dev)) {
vmstate_unregister(VMSTATE_IF(dev), qdev_get_vmsd(dev), dev);
qapi_event_send_unplug_primary(dev->id);
@@ -3794,7 +3794,7 @@ static void virtio_net_handle_migration_primary(VirtIONet *n, MigrationEvent *e)
} else {
warn_report("couldn't unplug primary device");
}
- } else if (e->type == MIG_EVENT_PRECOPY_FAILED) {
+ } else if (e->type == MIG_EVENT_FAILED) {
/* We already unplugged the device let's plug it back */
if (!failover_replug_primary(n, dev, &err)) {
if (err) {
diff --git a/hw/vfio/cpr-legacy.c b/hw/vfio/cpr-legacy.c
index 7c03ddb961..033a546c30 100644
--- a/hw/vfio/cpr-legacy.c
+++ b/hw/vfio/cpr-legacy.c
@@ -137,7 +137,7 @@ static int vfio_cpr_fail_notifier(NotifierWithReturn *notifier,
container_of(notifier, VFIOLegacyContainer, cpr.transfer_notifier);
VFIOContainer *bcontainer = VFIO_IOMMU(container);
- if (e->type != MIG_EVENT_PRECOPY_FAILED) {
+ if (e->type != MIG_EVENT_FAILED) {
return 0;
}
diff --git a/hw/vfio/cpr.c b/hw/vfio/cpr.c
index 998230d271..ffa4f8e099 100644
--- a/hw/vfio/cpr.c
+++ b/hw/vfio/cpr.c
@@ -18,7 +18,7 @@
int vfio_cpr_reboot_notifier(NotifierWithReturn *notifier,
MigrationEvent *e, Error **errp)
{
- if (e->type == MIG_EVENT_PRECOPY_SETUP &&
+ if (e->type == MIG_EVENT_SETUP &&
!runstate_check(RUN_STATE_SUSPENDED) && !vm_get_suspended()) {
error_setg(errp,
@@ -186,7 +186,7 @@ static int vfio_cpr_kvm_close_notifier(NotifierWithReturn *notifier,
MigrationEvent *e,
Error **errp)
{
- if (e->type == MIG_EVENT_PRECOPY_DONE) {
+ if (e->type == MIG_EVENT_DONE) {
vfio_kvm_device_close();
}
return 0;
@@ -272,9 +272,9 @@ static int vfio_cpr_pci_notifier(NotifierWithReturn *notifier,
VFIOPCIDevice *vdev =
container_of(notifier, VFIOPCIDevice, cpr.transfer_notifier);
- if (e->type == MIG_EVENT_PRECOPY_SETUP) {
+ if (e->type == MIG_EVENT_SETUP) {
return vfio_cpr_set_msi_virq(vdev, errp, false);
- } else if (e->type == MIG_EVENT_PRECOPY_FAILED) {
+ } else if (e->type == MIG_EVENT_FAILED) {
return vfio_cpr_set_msi_virq(vdev, errp, true);
}
return 0;
diff --git a/hw/vfio/migration.c b/hw/vfio/migration.c
index f857dc25ed..76a902b79c 100644
--- a/hw/vfio/migration.c
+++ b/hw/vfio/migration.c
@@ -917,10 +917,10 @@ static int vfio_migration_state_notifier(NotifierWithReturn *notifier,
trace_vfio_migration_state_notifier(vbasedev->name, e->type);
- if (e->type == MIG_EVENT_PRECOPY_FAILED) {
+ if (e->type == MIG_EVENT_FAILED) {
/*
* MigrationNotifyFunc may not return an error code and an Error
- * object for MIG_EVENT_PRECOPY_FAILED. Hence, report the error
+ * object for MIG_EVENT_FAILED. Hence, report the error
* locally and ignore the errp argument.
*/
ret = vfio_migration_set_state_or_reset(vbasedev,
diff --git a/migration/cpr-exec.c b/migration/cpr-exec.c
index e315a30f92..daa50916d2 100644
--- a/migration/cpr-exec.c
+++ b/migration/cpr-exec.c
@@ -164,7 +164,7 @@ static void cpr_exec_cb(void *opaque)
err = NULL;
/* Note, we can go from state COMPLETED to FAILED */
- migration_call_notifiers(MIG_EVENT_PRECOPY_FAILED, NULL);
+ migration_call_notifiers(MIG_EVENT_FAILED, NULL);
if (!migration_block_activate(&err)) {
/* error was already reported */
@@ -182,12 +182,12 @@ static int cpr_exec_notifier(NotifierWithReturn *notifier, MigrationEvent *e,
{
MigrationState *s = migrate_get_current();
- if (e->type == MIG_EVENT_PRECOPY_DONE) {
+ if (e->type == MIG_EVENT_DONE) {
QEMUBH *cpr_exec_bh = qemu_bh_new(cpr_exec_cb, NULL);
assert(s->state == MIGRATION_STATUS_COMPLETED);
qemu_bh_schedule(cpr_exec_bh);
qemu_notify_event();
- } else if (e->type == MIG_EVENT_PRECOPY_FAILED) {
+ } else if (e->type == MIG_EVENT_FAILED) {
cpr_exec_unpersist_state();
}
return 0;
diff --git a/migration/migration.c b/migration/migration.c
index a5b0561cbe..7ab0294d22 100644
--- a/migration/migration.c
+++ b/migration/migration.c
@@ -1337,7 +1337,7 @@ static void migration_cleanup(MigrationState *s)
* migration completed successfully.
*/
if (!migration_has_failed(s)) {
- migration_call_notifiers(MIG_EVENT_PRECOPY_DONE, NULL);
+ migration_call_notifiers(MIG_EVENT_DONE, NULL);
}
yank_unregister_instance(MIGRATION_YANK_INSTANCE);
@@ -1541,7 +1541,7 @@ int migration_call_notifiers(MigrationEventType type, Error **errp)
notifier = (NotifierWithReturn *)elem->data;
ret = notifier->notify(notifier, &e, errp);
if (ret) {
- assert(type == MIG_EVENT_PRECOPY_SETUP);
+ assert(type == MIG_EVENT_SETUP);
return ret;
}
}
@@ -3331,7 +3331,7 @@ static void migration_iteration_finish(MigrationState *s)
* Notify FAILED before starting VM, so that devices can invoke
* necessary fallbacks before vCPUs run again.
*/
- migration_call_notifiers(MIG_EVENT_PRECOPY_FAILED, NULL);
+ migration_call_notifiers(MIG_EVENT_FAILED, NULL);
if (runstate_is_live(s->vm_old_state)) {
if (!runstate_check(RUN_STATE_SHUTDOWN)) {
@@ -3769,7 +3769,7 @@ void migration_start_outgoing(MigrationState *s)
rate_limit = migrate_max_bandwidth();
/* Notify before starting migration thread */
- if (migration_call_notifiers(MIG_EVENT_PRECOPY_SETUP, &local_err)) {
+ if (migration_call_notifiers(MIG_EVENT_SETUP, &local_err)) {
goto fail;
}
}
diff --git a/net/vhost-vdpa.c b/net/vhost-vdpa.c
index 74d26a9497..f4b1f0e9e0 100644
--- a/net/vhost-vdpa.c
+++ b/net/vhost-vdpa.c
@@ -378,9 +378,9 @@ static int vdpa_net_migration_state_notifier(NotifierWithReturn *notifier,
{
VhostVDPAState *s = container_of(notifier, VhostVDPAState, migration_state);
- if (e->type == MIG_EVENT_PRECOPY_SETUP) {
+ if (e->type == MIG_EVENT_SETUP) {
vhost_vdpa_net_log_global_enable(s, true);
- } else if (e->type == MIG_EVENT_PRECOPY_FAILED) {
+ } else if (e->type == MIG_EVENT_FAILED) {
vhost_vdpa_net_log_global_enable(s, false);
}
return 0;
diff --git a/ui/spice-core.c b/ui/spice-core.c
index ce3c2954e3..ee13ecc4a5 100644
--- a/ui/spice-core.c
+++ b/ui/spice-core.c
@@ -583,13 +583,13 @@ static int migration_state_notifier(NotifierWithReturn *notifier,
return 0;
}
- if (e->type == MIG_EVENT_PRECOPY_SETUP) {
+ if (e->type == MIG_EVENT_SETUP) {
spice_server_migrate_start(spice_server);
- } else if (e->type == MIG_EVENT_PRECOPY_DONE ||
+ } else if (e->type == MIG_EVENT_DONE ||
e->type == MIG_EVENT_POSTCOPY_START) {
spice_server_migrate_end(spice_server, true);
spice_have_target_host = false;
- } else if (e->type == MIG_EVENT_PRECOPY_FAILED) {
+ } else if (e->type == MIG_EVENT_FAILED) {
spice_server_migrate_end(spice_server, false);
spice_have_target_host = false;
}
--
2.50.1
© 2016 - 2026 Red Hat, Inc.