From: "Dr. David Alan Gilbert (git)" <dgilbert@redhat.com>
To: qemu-devel@nongnu.org, lizhijian@cn.fujitsu.com,
lvivier@redhat.com, peterx@redhat.com
Cc: quintela@redhat.com
Subject: [PULL 5/6] migration: Clear error at entry of migrate_fd_connect()
Date: Tue, 13 Jul 2021 16:23:23 +0100 [thread overview]
Message-ID: <20210713152324.217255-6-dgilbert@redhat.com> (raw)
In-Reply-To: <20210713152324.217255-1-dgilbert@redhat.com>
From: Peter Xu <peterx@redhat.com>
For each "migrate" command, remember to clear the s->error before going on.
For one reason, when there's a new error it'll be still remembered; see
migrate_set_error() who only sets the error if error==NULL. Meanwhile if a
failed migration completes (e.g., postcopy recovered and finished), we
shouldn't dump an error when calling migrate_fd_cleanup() at last.
Signed-off-by: Peter Xu <peterx@redhat.com>
Message-Id: <20210708190653.252961-4-peterx@redhat.com>
Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
Signed-off-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
---
migration/migration.c | 16 ++++++++++++++++
1 file changed, 16 insertions(+)
diff --git a/migration/migration.c b/migration/migration.c
index 20c48cfff1..2d306582eb 100644
--- a/migration/migration.c
+++ b/migration/migration.c
@@ -1855,6 +1855,15 @@ void migrate_set_error(MigrationState *s, const Error *error)
}
}
+static void migrate_error_free(MigrationState *s)
+{
+ QEMU_LOCK_GUARD(&s->error_mutex);
+ if (s->error) {
+ error_free(s->error);
+ s->error = NULL;
+ }
+}
+
void migrate_fd_error(MigrationState *s, const Error *error)
{
trace_migrate_fd_error(error_get_pretty(error));
@@ -3970,6 +3979,13 @@ void migrate_fd_connect(MigrationState *s, Error *error_in)
int64_t rate_limit;
bool resume = s->state == MIGRATION_STATUS_POSTCOPY_PAUSED;
+ /*
+ * If there's a previous error, free it and prepare for another one.
+ * Meanwhile if migration completes successfully, there won't have an error
+ * dumped when calling migrate_fd_cleanup().
+ */
+ migrate_error_free(s);
+
s->expected_downtime = s->parameters.downtime_limit;
if (resume) {
assert(s->cleanup_bh);
--
2.31.1
next prev parent reply other threads:[~2021-07-13 15:25 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-07-13 15:23 [PULL 0/6] migration queue Dr. David Alan Gilbert (git)
2021-07-13 15:23 ` [PULL 1/6] migration/rdma: prevent from double free the same mr Dr. David Alan Gilbert (git)
2021-07-13 15:23 ` [PULL 2/6] migration: failover: emit a warning when the card is not fully unplugged Dr. David Alan Gilbert (git)
2021-07-13 15:23 ` [PULL 3/6] migration: Release return path early for paused postcopy Dr. David Alan Gilbert (git)
2021-07-13 15:23 ` [PULL 4/6] migration: Don't do migrate cleanup if during postcopy resume Dr. David Alan Gilbert (git)
2021-07-13 15:23 ` Dr. David Alan Gilbert (git) [this message]
2021-07-13 15:23 ` [PULL 6/6] migration: Move bitmap_mutex out of migration_bitmap_clear_dirty() Dr. David Alan Gilbert (git)
2021-07-14 11:00 ` [PULL 0/6] migration queue Peter Maydell
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=20210713152324.217255-6-dgilbert@redhat.com \
--to=dgilbert@redhat.com \
--cc=lizhijian@cn.fujitsu.com \
--cc=lvivier@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.