[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PULL 06/19] migration: failover: continue to wait card unplug on error
From: |
Dr. David Alan Gilbert (git) |
Subject: |
[PULL 06/19] migration: failover: continue to wait card unplug on error |
Date: |
Mon, 5 Jul 2021 11:02:22 +0100 |
From: Laurent Vivier <lvivier@redhat.com>
If the user cancels the migration in the unplug-wait state,
QEMU will try to plug back the card and this fails because the card
is partially unplugged.
To avoid the problem, continue to wait the card unplug, but to
allow the migration to be canceled if the card never finishes to unplug
use a timeout.
Bug: https://bugzilla.redhat.com/show_bug.cgi?id=1976852
Signed-off-by: Laurent Vivier <lvivier@redhat.com>
Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
Message-Id: <20210629155007.629086-3-lvivier@redhat.com>
Signed-off-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
---
migration/migration.c | 11 +++++++++++
1 file changed, 11 insertions(+)
diff --git a/migration/migration.c b/migration/migration.c
index dbc484c802..5ff7ba9d5c 100644
--- a/migration/migration.c
+++ b/migration/migration.c
@@ -3691,6 +3691,17 @@ static void qemu_savevm_wait_unplug(MigrationState *s,
int old_state,
qemu_savevm_state_guest_unplug_pending()) {
qemu_sem_timedwait(&s->wait_unplug_sem, 250);
}
+ if (s->state != MIGRATION_STATUS_WAIT_UNPLUG) {
+ int timeout = 120; /* 30 seconds */
+ /*
+ * migration has been canceled
+ * but as we have started an unplug we must wait the end
+ * to be able to plug back the card
+ */
+ while (timeout-- && qemu_savevm_state_guest_unplug_pending()) {
+ qemu_sem_timedwait(&s->wait_unplug_sem, 250);
+ }
+ }
migrate_set_state(&s->state, MIGRATION_STATUS_WAIT_UNPLUG, new_state);
} else {
--
2.31.1
- [PULL v2 00/19] migration queue, Dr. David Alan Gilbert (git), 2021/07/05
- [PULL 01/19] tests: migration-test: Add dirty ring test, Dr. David Alan Gilbert (git), 2021/07/05
- [PULL 02/19] migration: fix the memory overwriting risk in add_to_iovec, Dr. David Alan Gilbert (git), 2021/07/05
- [PULL 03/19] migration: Move yank outside qemu_start_incoming_migration(), Dr. David Alan Gilbert (git), 2021/07/05
- [PULL 04/19] migration: Allow reset of postcopy_recover_triggered when failed, Dr. David Alan Gilbert (git), 2021/07/05
- [PULL 06/19] migration: failover: continue to wait card unplug on error,
Dr. David Alan Gilbert (git) <=
- [PULL 05/19] migration: move wait-unplug loop to its own function, Dr. David Alan Gilbert (git), 2021/07/05
- [PULL 07/19] virtiofsd: use GDateTime for formatting timestamp for debug messages, Dr. David Alan Gilbert (git), 2021/07/05
- [PULL 08/19] docs: describe the security considerations with virtiofsd xattr mapping, Dr. David Alan Gilbert (git), 2021/07/05
- [PULL 09/19] virtiofsd: Don't allow file creation with FUSE_OPEN, Dr. David Alan Gilbert (git), 2021/07/05
- [PULL 10/19] virtiofsd: Fix fuse setxattr() API change issue, Dr. David Alan Gilbert (git), 2021/07/05
- [PULL 11/19] virtiofsd: Fix xattr operations overwriting errno, Dr. David Alan Gilbert (git), 2021/07/05
- [PULL 12/19] virtiofsd: Add support for extended setxattr, Dr. David Alan Gilbert (git), 2021/07/05
- [PULL 13/19] virtiofsd: Add umask to seccom allow list, Dr. David Alan Gilbert (git), 2021/07/05
- [PULL 14/19] virtiofsd: Add capability to change/restore umask, Dr. David Alan Gilbert (git), 2021/07/05
- [PULL 15/19] virtiofsd: Switch creds, drop FSETID for system.posix_acl_access xattr, Dr. David Alan Gilbert (git), 2021/07/05