From: "Daniel P. Berrangé" <berrange@redhat.com>
To: Hao Wang <wanghao232@huawei.com>
Cc: yubihong@huawei.com, zhang.zhanghailiang@huawei.com,
quintela@redhat.com, dgilbert@redhat.com, xiexiangyou@huawei.com,
qemu-devel@nongnu.org, alex.chen@huawei.com
Subject: Re: [PATCH] migration/tls: add error handling in multifd_tls_handshake_thread
Date: Tue, 9 Feb 2021 10:05:35 +0000 [thread overview]
Message-ID: <20210209100535.GD1166421@redhat.com> (raw)
In-Reply-To: <20210209075251.1428743-1-wanghao232@huawei.com>
On Tue, Feb 09, 2021 at 03:52:51PM +0800, Hao Wang wrote:
> 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/multifd.c | 11 ++++++++++-
> 1 file changed, 10 insertions(+), 1 deletion(-)
>
> diff --git a/migration/multifd.c b/migration/multifd.c
> index 45c690aa11..df29cdd26a 100644
> --- a/migration/multifd.c
> +++ b/migration/multifd.c
> @@ -736,7 +736,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)) {
Urgh, this method is rather confusing usng "true" to indicate failure.
In include/qapi/error.h we document
• bool-valued functions return true on success / false on failure,
Admittedly this problem is pre-existing before this patch, but I
would none the less like to see a patch that fixes thse inverted
semantics first, and then this as a subsequent patch on top.
> + /*
> + * 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)
Regards,
Daniel
--
|: https://berrange.com -o- https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org -o- https://fstop138.berrange.com :|
|: https://entangle-photo.org -o- https://www.instagram.com/dberrange :|
prev parent reply other threads:[~2021-02-09 10:07 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-02-09 7:52 [PATCH] migration/tls: add error handling in multifd_tls_handshake_thread Hao Wang
2021-02-09 10:05 ` Daniel P. Berrangé [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20210209100535.GD1166421@redhat.com \
--to=berrange@redhat.com \
--cc=alex.chen@huawei.com \
--cc=dgilbert@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=quintela@redhat.com \
--cc=wanghao232@huawei.com \
--cc=xiexiangyou@huawei.com \
--cc=yubihong@huawei.com \
--cc=zhang.zhanghailiang@huawei.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.