From: "Dr. David Alan Gilbert" <dgilbert@redhat.com>
To: Juan Quintela <quintela@redhat.com>
Cc: qemu-devel@nongnu.org, Paolo Bonzini <pbonzini@redhat.com>,
Laurent Vivier <lvivier@redhat.com>,
kvm@vger.kernel.org, Thomas Huth <thuth@redhat.com>,
Richard Henderson <rth@twiddle.net>
Subject: Re: [PATCH 3/4] migration: Make explicit that we are quitting multifd
Date: Wed, 24 Jul 2019 12:01:03 +0100 [thread overview]
Message-ID: <20190724110103.GC2717@work-vm> (raw)
In-Reply-To: <20190724095523.1527-4-quintela@redhat.com>
* Juan Quintela (quintela@redhat.com) wrote:
> We add a bool to indicate that.
>
> Signed-off-by: Juan Quintela <quintela@redhat.com>
OK, similar to send.
Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
> ---
> migration/ram.c | 9 +++++++++
> 1 file changed, 9 insertions(+)
>
> diff --git a/migration/ram.c b/migration/ram.c
> index 87bb7da8e2..eb6716710e 100644
> --- a/migration/ram.c
> +++ b/migration/ram.c
> @@ -677,6 +677,8 @@ typedef struct {
> QemuMutex mutex;
> /* is this channel thread running */
> bool running;
> + /* should this thread finish */
> + bool quit;
> /* array of pages to receive */
> MultiFDPages_t *pages;
> /* packet allocated len */
> @@ -1266,6 +1268,7 @@ static void multifd_recv_terminate_threads(Error *err)
> MultiFDRecvParams *p = &multifd_recv_state->params[i];
>
> qemu_mutex_lock(&p->mutex);
> + p->quit = true;
> /* We could arrive here for two reasons:
> - normal quit, i.e. everything went fine, just finished
> - error quit: We close the channels so the channel threads
> @@ -1288,6 +1291,7 @@ int multifd_load_cleanup(Error **errp)
> MultiFDRecvParams *p = &multifd_recv_state->params[i];
>
> if (p->running) {
> + p->quit = true;
> qemu_thread_join(&p->thread);
> }
> object_unref(OBJECT(p->c));
> @@ -1351,6 +1355,10 @@ static void *multifd_recv_thread(void *opaque)
> uint32_t used;
> uint32_t flags;
>
> + if (p->quit) {
> + break;
> + }
> +
> ret = qio_channel_read_all_eof(p->c, (void *)p->packet,
> p->packet_len, &local_err);
> if (ret == 0) { /* EOF */
> @@ -1422,6 +1430,7 @@ int multifd_load_setup(void)
>
> qemu_mutex_init(&p->mutex);
> qemu_sem_init(&p->sem_sync, 0);
> + p->quit = false;
> p->id = i;
> p->pages = multifd_pages_init(page_count);
> p->packet_len = sizeof(MultiFDPacket_t)
> --
> 2.21.0
>
--
Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK
WARNING: multiple messages have this Message-ID (diff)
From: "Dr. David Alan Gilbert" <dgilbert@redhat.com>
To: Juan Quintela <quintela@redhat.com>
Cc: Laurent Vivier <lvivier@redhat.com>,
Thomas Huth <thuth@redhat.com>,
kvm@vger.kernel.org, qemu-devel@nongnu.org,
Paolo Bonzini <pbonzini@redhat.com>,
Richard Henderson <rth@twiddle.net>
Subject: Re: [Qemu-devel] [PATCH 3/4] migration: Make explicit that we are quitting multifd
Date: Wed, 24 Jul 2019 12:01:03 +0100 [thread overview]
Message-ID: <20190724110103.GC2717@work-vm> (raw)
In-Reply-To: <20190724095523.1527-4-quintela@redhat.com>
* Juan Quintela (quintela@redhat.com) wrote:
> We add a bool to indicate that.
>
> Signed-off-by: Juan Quintela <quintela@redhat.com>
OK, similar to send.
Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
> ---
> migration/ram.c | 9 +++++++++
> 1 file changed, 9 insertions(+)
>
> diff --git a/migration/ram.c b/migration/ram.c
> index 87bb7da8e2..eb6716710e 100644
> --- a/migration/ram.c
> +++ b/migration/ram.c
> @@ -677,6 +677,8 @@ typedef struct {
> QemuMutex mutex;
> /* is this channel thread running */
> bool running;
> + /* should this thread finish */
> + bool quit;
> /* array of pages to receive */
> MultiFDPages_t *pages;
> /* packet allocated len */
> @@ -1266,6 +1268,7 @@ static void multifd_recv_terminate_threads(Error *err)
> MultiFDRecvParams *p = &multifd_recv_state->params[i];
>
> qemu_mutex_lock(&p->mutex);
> + p->quit = true;
> /* We could arrive here for two reasons:
> - normal quit, i.e. everything went fine, just finished
> - error quit: We close the channels so the channel threads
> @@ -1288,6 +1291,7 @@ int multifd_load_cleanup(Error **errp)
> MultiFDRecvParams *p = &multifd_recv_state->params[i];
>
> if (p->running) {
> + p->quit = true;
> qemu_thread_join(&p->thread);
> }
> object_unref(OBJECT(p->c));
> @@ -1351,6 +1355,10 @@ static void *multifd_recv_thread(void *opaque)
> uint32_t used;
> uint32_t flags;
>
> + if (p->quit) {
> + break;
> + }
> +
> ret = qio_channel_read_all_eof(p->c, (void *)p->packet,
> p->packet_len, &local_err);
> if (ret == 0) { /* EOF */
> @@ -1422,6 +1430,7 @@ int multifd_load_setup(void)
>
> qemu_mutex_init(&p->mutex);
> qemu_sem_init(&p->sem_sync, 0);
> + p->quit = false;
> p->id = i;
> p->pages = multifd_pages_init(page_count);
> p->packet_len = sizeof(MultiFDPacket_t)
> --
> 2.21.0
>
--
Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK
next prev parent reply other threads:[~2019-07-24 11:01 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-07-24 9:55 [PATCH 0/4] migration: fix migrate_cancel problems of multifd Juan Quintela
2019-07-24 9:55 ` [Qemu-devel] " Juan Quintela
2019-07-24 9:55 ` [PATCH 1/4] migration: fix migrate_cancel leads live_migration thread endless loop Juan Quintela
2019-07-24 9:55 ` [Qemu-devel] " Juan Quintela
2019-07-24 10:57 ` Dr. David Alan Gilbert
2019-07-24 10:57 ` [Qemu-devel] " Dr. David Alan Gilbert
2019-07-24 9:55 ` [PATCH 2/4] migration: fix migrate_cancel leads live_migration thread hung forever Juan Quintela
2019-07-24 9:55 ` [Qemu-devel] " Juan Quintela
2019-07-24 10:58 ` Dr. David Alan Gilbert
2019-07-24 10:58 ` [Qemu-devel] " Dr. David Alan Gilbert
2019-07-24 9:55 ` [PATCH 3/4] migration: Make explicit that we are quitting multifd Juan Quintela
2019-07-24 9:55 ` [Qemu-devel] " Juan Quintela
2019-07-24 11:01 ` Dr. David Alan Gilbert [this message]
2019-07-24 11:01 ` Dr. David Alan Gilbert
2019-07-24 9:55 ` [PATCH 4/4] migration: fix migrate_cancel multifd migration leads destination hung forever Juan Quintela
2019-07-24 9:55 ` [Qemu-devel] " Juan Quintela
2019-07-24 11:03 ` Dr. David Alan Gilbert
2019-07-24 11:03 ` [Qemu-devel] " Dr. David Alan Gilbert
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=20190724110103.GC2717@work-vm \
--to=dgilbert@redhat.com \
--cc=kvm@vger.kernel.org \
--cc=lvivier@redhat.com \
--cc=pbonzini@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=quintela@redhat.com \
--cc=rth@twiddle.net \
--cc=thuth@redhat.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.