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)
|
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_created);
|
||||||
qemu_sem_destroy(&multifd_send_state->channels_ready);
|
qemu_sem_destroy(&multifd_send_state->channels_ready);
|
||||||
g_free(multifd_send_state->params);
|
g_free(multifd_send_state->params);
|
||||||
|
@ -64,10 +64,6 @@ int socket_send_channel_destroy(QIOChannel *send)
|
|||||||
{
|
{
|
||||||
/* Remove channel */
|
/* Remove channel */
|
||||||
object_unref(OBJECT(send));
|
object_unref(OBJECT(send));
|
||||||
if (outgoing_args.saddr) {
|
|
||||||
qapi_free_SocketAddress(outgoing_args.saddr);
|
|
||||||
outgoing_args.saddr = NULL;
|
|
||||||
}
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -137,6 +133,14 @@ void socket_start_outgoing_migration(MigrationState *s,
|
|||||||
NULL);
|
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,
|
static void socket_accept_incoming_migration(QIONetListener *listener,
|
||||||
QIOChannelSocket *cioc,
|
QIOChannelSocket *cioc,
|
||||||
gpointer opaque)
|
gpointer opaque)
|
||||||
|
@ -29,4 +29,6 @@ void socket_start_incoming_migration(SocketAddress *saddr, Error **errp);
|
|||||||
|
|
||||||
void socket_start_outgoing_migration(MigrationState *s,
|
void socket_start_outgoing_migration(MigrationState *s,
|
||||||
SocketAddress *saddr, Error **errp);
|
SocketAddress *saddr, Error **errp);
|
||||||
|
void socket_cleanup_outgoing_migration(void);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
Loading…
Reference in New Issue
Block a user