migration/multifd: Cleanup outgoing_args in state destroy
outgoing_args is a global cache of socket address to be reused in multifd. Freeing the cache in per-channel destructor is more or less a hack. Move it to multifd_send_cleanup_state() so it only get checked once. Use a small helper to do so because it's internal of socket.c. Reviewed-by: Fabiano Rosas <farosas@suse.de> Link: https://lore.kernel.org/r/20240222095301.171137-5-peterx@redhat.com Signed-off-by: Peter Xu <peterx@redhat.com>
This commit is contained in:
parent
770de49c00
commit
72b90b9687
@ -689,6 +689,7 @@ static bool multifd_send_cleanup_channel(MultiFDSendParams *p, Error **errp)
|
||||
|
||||
static void multifd_send_cleanup_state(void)
|
||||
{
|
||||
socket_cleanup_outgoing_migration();
|
||||
qemu_sem_destroy(&multifd_send_state->channels_created);
|
||||
qemu_sem_destroy(&multifd_send_state->channels_ready);
|
||||
g_free(multifd_send_state->params);
|
||||
|
@ -64,10 +64,6 @@ int socket_send_channel_destroy(QIOChannel *send)
|
||||
{
|
||||
/* Remove channel */
|
||||
object_unref(OBJECT(send));
|
||||
if (outgoing_args.saddr) {
|
||||
qapi_free_SocketAddress(outgoing_args.saddr);
|
||||
outgoing_args.saddr = NULL;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -137,6 +133,14 @@ void socket_start_outgoing_migration(MigrationState *s,
|
||||
NULL);
|
||||
}
|
||||
|
||||
void socket_cleanup_outgoing_migration(void)
|
||||
{
|
||||
if (outgoing_args.saddr) {
|
||||
qapi_free_SocketAddress(outgoing_args.saddr);
|
||||
outgoing_args.saddr = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
static void socket_accept_incoming_migration(QIONetListener *listener,
|
||||
QIOChannelSocket *cioc,
|
||||
gpointer opaque)
|
||||
|
@ -29,4 +29,6 @@ void socket_start_incoming_migration(SocketAddress *saddr, Error **errp);
|
||||
|
||||
void socket_start_outgoing_migration(MigrationState *s,
|
||||
SocketAddress *saddr, Error **errp);
|
||||
void socket_cleanup_outgoing_migration(void);
|
||||
|
||||
#endif
|
||||
|
Loading…
Reference in New Issue
Block a user