Message ID | 1705071910-174321-5-git-send-email-steven.sistare@oracle.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | allow cpr-reboot for vfio | expand |
On Fri, Jan 12, 2024 at 07:05:03AM -0800, Steve Sistare wrote: > bool migration_in_incoming_postcopy(void) > diff --git a/ui/spice-core.c b/ui/spice-core.c > index b3cd229..e43a93f 100644 > --- a/ui/spice-core.c > +++ b/ui/spice-core.c > @@ -580,7 +580,7 @@ static int migration_state_notifier(NotifierWithReturn *notifier, > if (migration_in_setup(s)) { > spice_server_migrate_start(spice_server); > } else if (migration_has_finished(s) || > - migration_in_postcopy_after_devices(s)) { > + migration_in_postcopy_after_devices()) { This can be a reply also to your other email: my previous suggestion of using PRECOPY_DONE should apply here, where we can convert this chunk into: } else if (event == MIG_EVENT_PRECOPY_DONE) {...} Because PRECOPY_DONE should also cover the notification from postcopy_start(), then we can drop migration_in_postcopy_after_devices() completely, I think.
On 1/15/2024 1:48 AM, Peter Xu wrote: > On Fri, Jan 12, 2024 at 07:05:03AM -0800, Steve Sistare wrote: >> bool migration_in_incoming_postcopy(void) >> diff --git a/ui/spice-core.c b/ui/spice-core.c >> index b3cd229..e43a93f 100644 >> --- a/ui/spice-core.c >> +++ b/ui/spice-core.c >> @@ -580,7 +580,7 @@ static int migration_state_notifier(NotifierWithReturn *notifier, >> if (migration_in_setup(s)) { >> spice_server_migrate_start(spice_server); >> } else if (migration_has_finished(s) || >> - migration_in_postcopy_after_devices(s)) { >> + migration_in_postcopy_after_devices()) { > > This can be a reply also to your other email: my previous suggestion of > using PRECOPY_DONE should apply here, where we can convert this chunk into: > > } else if (event == MIG_EVENT_PRECOPY_DONE) {...} > > Because PRECOPY_DONE should also cover the notification from > postcopy_start(), then we can drop migration_in_postcopy_after_devices() > completely, I think. Yes, that works. I will define and use MIG_EVENT_PRECOPY_DONE and friends in "MigrationEvent for notifiers". - Steve
diff --git a/include/migration/misc.h b/include/migration/misc.h index b62e351..dcc98bb 100644 --- a/include/migration/misc.h +++ b/include/migration/misc.h @@ -68,7 +68,7 @@ bool migration_in_setup(MigrationState *); bool migration_has_finished(MigrationState *); bool migration_has_failed(MigrationState *); /* ...and after the device transmission */ -bool migration_in_postcopy_after_devices(MigrationState *); +bool migration_in_postcopy_after_devices(void); /* True if incoming migration entered POSTCOPY_INCOMING_DISCARD */ bool migration_in_incoming_postcopy(void); /* True if incoming migration entered POSTCOPY_INCOMING_ADVISE */ diff --git a/migration/migration.c b/migration/migration.c index fa662a5..ad3acd1 100644 --- a/migration/migration.c +++ b/migration/migration.c @@ -1460,18 +1460,22 @@ bool migration_has_failed(MigrationState *s) s->state == MIGRATION_STATUS_FAILED); } +static bool migration_state_in_postcopy(MigrationState *s) +{ + switch (s->state) { + case MIGRATION_STATUS_POSTCOPY_ACTIVE: + case MIGRATION_STATUS_POSTCOPY_PAUSED: + case MIGRATION_STATUS_POSTCOPY_RECOVER: + return true; + default: + return false; + } +} + bool migration_in_postcopy(void) { MigrationState *s = migrate_get_current(); - - switch (s->state) { - case MIGRATION_STATUS_POSTCOPY_ACTIVE: - case MIGRATION_STATUS_POSTCOPY_PAUSED: - case MIGRATION_STATUS_POSTCOPY_RECOVER: - return true; - default: - return false; - } + return migration_state_in_postcopy(s); } bool migration_postcopy_is_alive(int state) @@ -1485,9 +1489,10 @@ bool migration_postcopy_is_alive(int state) } } -bool migration_in_postcopy_after_devices(MigrationState *s) +bool migration_in_postcopy_after_devices(void) { - return migration_in_postcopy() && s->postcopy_after_devices; + MigrationState *s = migrate_get_current(); + return migration_state_in_postcopy(s) && s->postcopy_after_devices; } bool migration_in_incoming_postcopy(void) diff --git a/ui/spice-core.c b/ui/spice-core.c index b3cd229..e43a93f 100644 --- a/ui/spice-core.c +++ b/ui/spice-core.c @@ -580,7 +580,7 @@ static int migration_state_notifier(NotifierWithReturn *notifier, if (migration_in_setup(s)) { spice_server_migrate_start(spice_server); } else if (migration_has_finished(s) || - migration_in_postcopy_after_devices(s)) { + migration_in_postcopy_after_devices()) { spice_server_migrate_end(spice_server, true); spice_have_target_host = false; } else if (migration_has_failed(s)) {
Delete the explicit MigrationState parameter from migration_in_postcopy, so we can eliminate MigrationState from notifiers in a later patch. No functional change. Signed-off-by: Steve Sistare <steven.sistare@oracle.com> --- include/migration/misc.h | 2 +- migration/migration.c | 27 ++++++++++++++++----------- ui/spice-core.c | 2 +- 3 files changed, 18 insertions(+), 13 deletions(-)