[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PULL 05/20] migration: Allow reset of postcopy_recover_triggered when f
From: |
Dr. David Alan Gilbert (git) |
Subject: |
[PULL 05/20] migration: Allow reset of postcopy_recover_triggered when failed |
Date: |
Thu, 1 Jul 2021 15:15:30 +0100 |
From: Peter Xu <peterx@redhat.com>
It's possible qemu_start_incoming_migration() failed at any point, when it
happens we should reset postcopy_recover_triggered to false so that the user
can still retry with a saner incoming port.
Signed-off-by: Peter Xu <peterx@redhat.com>
Message-Id: <20210629181356.217312-3-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 | 13 +++++++++++++
1 file changed, 13 insertions(+)
diff --git a/migration/migration.c b/migration/migration.c
index 1bb03d1eca..fcca289ef7 100644
--- a/migration/migration.c
+++ b/migration/migration.c
@@ -2097,6 +2097,13 @@ void qmp_migrate_recover(const char *uri, Error **errp)
{
MigrationIncomingState *mis = migration_incoming_get_current();
+ /*
+ * Don't even bother to use ERRP_GUARD() as it _must_ always be set by
+ * callers (no one should ignore a recover failure); if there is, it's a
+ * programming error.
+ */
+ assert(errp);
+
if (mis->state != MIGRATION_STATUS_POSTCOPY_PAUSED) {
error_setg(errp, "Migrate recover can only be run "
"when postcopy is paused.");
@@ -2115,6 +2122,12 @@ void qmp_migrate_recover(const char *uri, Error **errp)
* to continue using that newly established channel.
*/
qemu_start_incoming_migration(uri, errp);
+
+ /* Safe to dereference with the assert above */
+ if (*errp) {
+ /* Reset the flag so user could still retry */
+ qatomic_set(&mis->postcopy_recover_triggered, false);
+ }
}
void qmp_migrate_pause(Error **errp)
--
2.31.1
- [PULL 00/20] migration queue, Dr. David Alan Gilbert (git), 2021/07/01
- [PULL 01/20] tests: migration-test: Still run the rest even if uffd missing, Dr. David Alan Gilbert (git), 2021/07/01
- [PULL 02/20] tests: migration-test: Add dirty ring test, Dr. David Alan Gilbert (git), 2021/07/01
- [PULL 03/20] migration: fix the memory overwriting risk in add_to_iovec, Dr. David Alan Gilbert (git), 2021/07/01
- [PULL 04/20] migration: Move yank outside qemu_start_incoming_migration(), Dr. David Alan Gilbert (git), 2021/07/01
- [PULL 05/20] migration: Allow reset of postcopy_recover_triggered when failed,
Dr. David Alan Gilbert (git) <=
- [PULL 06/20] migration: move wait-unplug loop to its own function, Dr. David Alan Gilbert (git), 2021/07/01
- [PULL 07/20] migration: failover: continue to wait card unplug on error, Dr. David Alan Gilbert (git), 2021/07/01
- [PULL 08/20] virtiofsd: use GDateTime for formatting timestamp for debug messages, Dr. David Alan Gilbert (git), 2021/07/01
- [PULL 09/20] docs: describe the security considerations with virtiofsd xattr mapping, Dr. David Alan Gilbert (git), 2021/07/01
- [PULL 10/20] virtiofsd: Don't allow file creation with FUSE_OPEN, Dr. David Alan Gilbert (git), 2021/07/01
- [PULL 11/20] virtiofsd: Fix fuse setxattr() API change issue, Dr. David Alan Gilbert (git), 2021/07/01
- [PULL 12/20] virtiofsd: Fix xattr operations overwriting errno, Dr. David Alan Gilbert (git), 2021/07/01
- [PULL 13/20] virtiofsd: Add support for extended setxattr, Dr. David Alan Gilbert (git), 2021/07/01
- [PULL 14/20] virtiofsd: Add umask to seccom allow list, Dr. David Alan Gilbert (git), 2021/07/01
- [PULL 15/20] virtiofsd: Add capability to change/restore umask, Dr. David Alan Gilbert (git), 2021/07/01