All of lore.kernel.org
 help / color / mirror / Atom feed
From: Juan Quintela <quintela@redhat.com>
To: "Rao, Lei" <lei.rao@intel.com>
Cc: qemu-devel@nongnu.org, chen.zhang@intel.com,
	zhang.zhanghailiang@huawei.com, dgilbert@redhat.com
Subject: Re: [PATCH 1/2] Fixed a QEMU hang when guest poweroff in COLO mode
Date: Wed, 10 Nov 2021 10:55:05 +0100	[thread overview]
Message-ID: <87ee7o2v46.fsf@secure.mitica> (raw)
In-Reply-To: <1636533456-5374-1-git-send-email-lei.rao@intel.com> (Lei Rao's message of "Wed, 10 Nov 2021 16:37:35 +0800")

"Rao, Lei" <lei.rao@intel.com> wrote:
> From: "Rao, Lei" <lei.rao@intel.com>
>
> When the PVM guest poweroff, the COLO thread may wait a semaphore
> in colo_process_checkpoint().So, we should wake up the COLO thread
> before migration shutdown.
>
> Signed-off-by: Lei Rao <lei.rao@intel.com>

A couple of notes.

> ---
>  include/migration/colo.h |  1 +
>  migration/colo.c         | 14 ++++++++++++++
>  migration/migration.c    | 10 ++++++++++
>  3 files changed, 25 insertions(+)
>
> diff --git a/include/migration/colo.h b/include/migration/colo.h
> index 768e1f0..525b45a 100644
> --- a/include/migration/colo.h
> +++ b/include/migration/colo.h
> @@ -37,4 +37,5 @@ COLOMode get_colo_mode(void);
>  void colo_do_failover(void);
>  
>  void colo_checkpoint_notify(void *opaque);
> +void colo_shutdown(COLOMode mode);
>  #endif
> diff --git a/migration/colo.c b/migration/colo.c
> index 2415325..385c1d7 100644
> --- a/migration/colo.c
> +++ b/migration/colo.c
> @@ -820,6 +820,20 @@ static void colo_wait_handle_message(MigrationIncomingState *mis,
>      }
>  }
>  
> +void colo_shutdown(COLOMode mode)
> +{
> +    if (mode == COLO_MODE_PRIMARY) {
> +        MigrationState *s = migrate_get_current();
> +
> +        qemu_event_set(&s->colo_checkpoint_event);
> +        qemu_sem_post(&s->colo_exit_sem);
> +    } else {
> +        MigrationIncomingState *mis = migration_incoming_get_current();
> +
> +        qemu_sem_post(&mis->colo_incoming_sem);
> +    }
> +}
> +
>  void *colo_process_incoming_thread(void *opaque)
>  {
>      MigrationIncomingState *mis = opaque;
> diff --git a/migration/migration.c b/migration/migration.c
> index abaf6f9..9df6328 100644
> --- a/migration/migration.c
> +++ b/migration/migration.c
> @@ -225,6 +225,16 @@ void migration_cancel(const Error *error)
>  
>  void migration_shutdown(void)
>  {
> +    COLOMode mode = get_colo_mode();
> +
> +    /*
> +     * When the QEMU main thread exit, the COLO thread
> +     * may wait a semaphore. So, we should wakeup the
> +     * COLO thread before migration shutdown.
> +     */
> +    if (mode != COLO_MODE_NONE) {
> +        colo_shutdown(mode);
> +     }

don't put the code on the main path.

Could you just put all of this inside a colo_shutdown() call?

Thanks, Juan.

>      /*
>       * Cancel the current migration - that will (eventually)
>       * stop the migration using this structure



  parent reply	other threads:[~2021-11-10  9:58 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-11-10  8:37 [PATCH 1/2] Fixed a QEMU hang when guest poweroff in COLO mode Rao, Lei
2021-11-10  8:37 ` [PATCH 2/2] migration/ram.c: Remove the qemu_mutex_lock in colo_flush_ram_cache Rao, Lei
2021-11-10  9:56   ` Juan Quintela
2021-11-11  2:24   ` Zhang, Chen
2021-11-10  9:55 ` Juan Quintela [this message]
2021-11-10 12:53   ` [PATCH 1/2] Fixed a QEMU hang when guest poweroff in COLO mode Rao, Lei

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=87ee7o2v46.fsf@secure.mitica \
    --to=quintela@redhat.com \
    --cc=chen.zhang@intel.com \
    --cc=dgilbert@redhat.com \
    --cc=lei.rao@intel.com \
    --cc=qemu-devel@nongnu.org \
    --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.