qemu/migration-tls-add-error-handling-in-multifd_tls_hand.patch
ChuanZheng 7c511d7e1f multifd/tls: add support for multifd tls feature
tls migration can easily reach bottleneck of cpu which results in
migration failure.
add support for multifd tls feature to make fully use of bandwidth.
2021-04-17 16:43:05 +08:00

43 lines
1.4 KiB
Diff

From 4bf84b63bf1b2fba031fc6c3f4948785d534df3b Mon Sep 17 00:00:00 2001
From: Chuan Zheng <zhengchuan@huawei.com>
Date: Fri, 5 Mar 2021 16:10:57 +0800
Subject: [PATCH] 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: Hao Wang <wanghao232@huawei.com>
---
migration/ram.c | 11 ++++++++++-
1 file changed, 10 insertions(+), 1 deletion(-)
diff --git a/migration/ram.c b/migration/ram.c
index 3338363e9d..d4ac696899 100644
--- a/migration/ram.c
+++ b/migration/ram.c
@@ -1516,7 +1516,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)
--
2.27.0