migration: Create migration_has_all_channels
This function allows us to decide when to close the listener socket. For now, we only need one connection. Signed-off-by: Juan Quintela <quintela@redhat.com> Reviewed-by: Daniel P. Berrange <berrange@redhat.com>
This commit is contained in:
parent
8e1a1931ca
commit
428d89084c
@ -384,6 +384,17 @@ void migration_ioc_process_incoming(QIOChannel *ioc)
|
|||||||
/* We still only have a single channel. Nothing to do here yet */
|
/* We still only have a single channel. Nothing to do here yet */
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @migration_has_all_channels: We have received all channels that we need
|
||||||
|
*
|
||||||
|
* Returns true when we have got connections to all the channels that
|
||||||
|
* we need for migration.
|
||||||
|
*/
|
||||||
|
bool migration_has_all_channels(void)
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Send a 'SHUT' message on the return channel with the given value
|
* Send a 'SHUT' message on the return channel with the given value
|
||||||
* to indicate that we've finished with the RP. Non-0 value indicates
|
* to indicate that we've finished with the RP. Non-0 value indicates
|
||||||
|
@ -155,6 +155,8 @@ void migrate_set_state(int *state, int old_state, int new_state);
|
|||||||
void migration_fd_process_incoming(QEMUFile *f);
|
void migration_fd_process_incoming(QEMUFile *f);
|
||||||
void migration_ioc_process_incoming(QIOChannel *ioc);
|
void migration_ioc_process_incoming(QIOChannel *ioc);
|
||||||
|
|
||||||
|
bool migration_has_all_channels(void);
|
||||||
|
|
||||||
uint64_t migrate_max_downtime(void);
|
uint64_t migrate_max_downtime(void);
|
||||||
|
|
||||||
void migrate_fd_error(MigrationState *s, const Error *error);
|
void migrate_fd_error(MigrationState *s, const Error *error);
|
||||||
|
@ -152,9 +152,13 @@ static gboolean socket_accept_incoming_migration(QIOChannel *ioc,
|
|||||||
object_unref(OBJECT(sioc));
|
object_unref(OBJECT(sioc));
|
||||||
|
|
||||||
out:
|
out:
|
||||||
|
if (migration_has_all_channels()) {
|
||||||
/* Close listening socket as its no longer needed */
|
/* Close listening socket as its no longer needed */
|
||||||
qio_channel_close(ioc, NULL);
|
qio_channel_close(ioc, NULL);
|
||||||
return G_SOURCE_REMOVE;
|
return G_SOURCE_REMOVE;
|
||||||
|
} else {
|
||||||
|
return G_SOURCE_CONTINUE;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user