From: "Dr. David Alan Gilbert" <dgilbert@redhat.com>
To: qemu-devel@nongnu.org, quintela@redhat.com, peterx@redhat.com
Subject: Re: [Qemu-devel] [PATCH] migration: Fix cancel state
Date: Tue, 5 Mar 2019 13:22:25 +0000 [thread overview]
Message-ID: <20190305132224.GA9811@work-vm> (raw)
In-Reply-To: <20190219195928.12289-1-dgilbert@redhat.com>
* Dr. David Alan Gilbert (git) (dgilbert@redhat.com) wrote:
> From: "Dr. David Alan Gilbert" <dgilbert@redhat.com>
>
> During a cancelled migration there's a race where the fd can
> go into an error state before we get back around the migration loop
> and migration_detect_error transitions from cancelling->failed.
>
> Check for cancelled/cancelling and don't change the state.
>
> Red Hat bug: https://bugzilla.redhat.com/show_bug.cgi?id=1608649
>
> Fixes: b23c2ade250
> Signed-off-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
Queued
> ---
> migration/migration.c | 11 +++++++++--
> 1 file changed, 9 insertions(+), 2 deletions(-)
>
> diff --git a/migration/migration.c b/migration/migration.c
> index c39d3054ec..e44f77af02 100644
> --- a/migration/migration.c
> +++ b/migration/migration.c
> @@ -2911,6 +2911,13 @@ static MigThrError postcopy_pause(MigrationState *s)
> static MigThrError migration_detect_error(MigrationState *s)
> {
> int ret;
> + int state = s->state;
> +
> + if (state == MIGRATION_STATUS_CANCELLING ||
> + state == MIGRATION_STATUS_CANCELLED) {
> + /* End the migration, but don't set the state to failed */
> + return MIG_THR_ERR_FATAL;
> + }
>
> /* Try to detect any file errors */
> ret = qemu_file_get_error(s->to_dst_file);
> @@ -2920,7 +2927,7 @@ static MigThrError migration_detect_error(MigrationState *s)
> return MIG_THR_ERR_NONE;
> }
>
> - if (s->state == MIGRATION_STATUS_POSTCOPY_ACTIVE && ret == -EIO) {
> + if (state == MIGRATION_STATUS_POSTCOPY_ACTIVE && ret == -EIO) {
> /*
> * For postcopy, we allow the network to be down for a
> * while. After that, it can be continued by a
> @@ -2932,7 +2939,7 @@ static MigThrError migration_detect_error(MigrationState *s)
> * For precopy (or postcopy with error outside IO), we fail
> * with no time.
> */
> - migrate_set_state(&s->state, s->state, MIGRATION_STATUS_FAILED);
> + migrate_set_state(&s->state, state, MIGRATION_STATUS_FAILED);
> trace_migration_thread_file_err();
>
> /* Time to stop the migration, now. */
> --
> 2.20.1
>
>
--
Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK
prev parent reply other threads:[~2019-03-05 13:22 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-02-19 19:59 [Qemu-devel] [PATCH] migration: Fix cancel state Dr. David Alan Gilbert (git)
2019-02-20 5:09 ` Peter Xu
2019-02-20 9:34 ` Juan Quintela
2019-03-05 13:22 ` Dr. David Alan Gilbert [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=20190305132224.GA9811@work-vm \
--to=dgilbert@redhat.com \
--cc=peterx@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=quintela@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.