Skip to content
Snippets Groups Projects
Commit fca67642 authored by Hao Wang's avatar Hao Wang Committed by Dr. David Alan Gilbert
Browse files

migration/tls: add error handling in multifd_tls_handshake_thread


If any error happens during multifd send thread creating (e.g. channel broke
because new domain is destroyed by the dst), multifd_tls_handshake_thread
may exit silently, leaving main migration thread hanging (ram_save_setup ->
multifd_send_sync_main -> qemu_sem_wait(&p->sem_sync)).
Fix that by adding error handling in multifd_tls_handshake_thread.

Signed-off-by: default avatarHao Wang <wanghao232@huawei.com>
Message-Id: <20210209104237.2250941-3-wanghao232@huawei.com>
Reviewed-by: default avatarDaniel P. Berrangé <berrange@redhat.com>
Reviewed-by: default avatarChuan Zheng <zhengchuan@huawei.com>
Signed-off-by: default avatarDr. David Alan Gilbert <dgilbert@redhat.com>
parent a339149a
No related branches found
No related tags found
No related merge requests found
......@@ -739,7 +739,16 @@ static void multifd_tls_outgoing_handshake(QIOTask *task,
} else {
trace_multifd_tls_outgoing_handshake_complete(ioc);
}
multifd_channel_connect(p, ioc, err);
if (!multifd_channel_connect(p, ioc, err)) {
/*
* Error happen, mark multifd_send_thread status as 'quit' although it
* is not created, and then tell who pay attention to me.
*/
p->quit = true;
qemu_sem_post(&multifd_send_state->channels_ready);
qemu_sem_post(&p->sem_sync);
}
}
static void *multifd_tls_handshake_thread(void *opaque)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment