[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PULL 2/6] migration: Optimization about wait-unplug migration state
From: |
Juan Quintela |
Subject: |
[PULL 2/6] migration: Optimization about wait-unplug migration state |
Date: |
Thu, 13 Feb 2020 14:20:26 +0100 |
From: Keqian Zhu <address@hidden>
qemu_savevm_nr_failover_devices() is originally designed to
get the number of failover devices, but it actually returns
the number of "unplug-pending" failover devices now. Moreover,
what drives migration state to wait-unplug should be the number
of "unplug-pending" failover devices, not all failover devices.
We can also notice that qemu_savevm_state_guest_unplug_pending()
and qemu_savevm_nr_failover_devices() is equivalent almost (from
the code view). So the latter is incorrect semantically and
useless, just delete it.
In the qemu_savevm_state_guest_unplug_pending(), once hit a
unplug-pending failover device, then it can return true right
now to save cpu time.
Signed-off-by: Keqian Zhu <address@hidden>
Reviewed-by: Juan Quintela <address@hidden>
Tested-by: Jens Freimann <address@hidden>
Reviewed-by: Jens Freimann <address@hidden>
Signed-off-by: Juan Quintela <address@hidden>
---
migration/migration.c | 2 +-
migration/savevm.c | 24 +++---------------------
migration/savevm.h | 1 -
3 files changed, 4 insertions(+), 23 deletions(-)
diff --git a/migration/migration.c b/migration/migration.c
index 1ca6be2323..8fb68795dc 100644
--- a/migration/migration.c
+++ b/migration/migration.c
@@ -3341,7 +3341,7 @@ static void *migration_thread(void *opaque)
qemu_savevm_state_setup(s->to_dst_file);
- if (qemu_savevm_nr_failover_devices()) {
+ if (qemu_savevm_state_guest_unplug_pending()) {
migrate_set_state(&s->state, MIGRATION_STATUS_SETUP,
MIGRATION_STATUS_WAIT_UNPLUG);
diff --git a/migration/savevm.c b/migration/savevm.c
index f19cb9ec7a..1d4220ece8 100644
--- a/migration/savevm.c
+++ b/migration/savevm.c
@@ -1140,36 +1140,18 @@ void qemu_savevm_state_header(QEMUFile *f)
}
}
-int qemu_savevm_nr_failover_devices(void)
+bool qemu_savevm_state_guest_unplug_pending(void)
{
SaveStateEntry *se;
- int n = 0;
QTAILQ_FOREACH(se, &savevm_state.handlers, entry) {
if (se->vmsd && se->vmsd->dev_unplug_pending &&
se->vmsd->dev_unplug_pending(se->opaque)) {
- n++;
- }
- }
-
- return n;
-}
-
-bool qemu_savevm_state_guest_unplug_pending(void)
-{
- SaveStateEntry *se;
- int n = 0;
-
- QTAILQ_FOREACH(se, &savevm_state.handlers, entry) {
- if (!se->vmsd || !se->vmsd->dev_unplug_pending) {
- continue;
- }
- if (se->vmsd->dev_unplug_pending(se->opaque)) {
- n++;
+ return true;
}
}
- return n > 0;
+ return false;
}
void qemu_savevm_state_setup(QEMUFile *f)
diff --git a/migration/savevm.h b/migration/savevm.h
index c42b9c80ee..ba64a7e271 100644
--- a/migration/savevm.h
+++ b/migration/savevm.h
@@ -31,7 +31,6 @@
bool qemu_savevm_state_blocked(Error **errp);
void qemu_savevm_state_setup(QEMUFile *f);
-int qemu_savevm_nr_failover_devices(void);
bool qemu_savevm_state_guest_unplug_pending(void);
int qemu_savevm_state_resume_prepare(MigrationState *s);
void qemu_savevm_state_header(QEMUFile *f);
--
2.24.1
- [PULL 0/6] Pull migration patches, Juan Quintela, 2020/02/13
- [PULL 1/6] migration: Maybe VM is paused when migration is cancelled, Juan Quintela, 2020/02/13
- [PULL 2/6] migration: Optimization about wait-unplug migration state,
Juan Quintela <=
- [PULL 3/6] migration/rdma: rdma_accept_incoming_migration fix error handling, Juan Quintela, 2020/02/13
- [PULL 4/6] tests/migration: Add some slack to auto converge, Juan Quintela, 2020/02/13
- [PULL 5/6] migration-test: fix some memleaks in migration-test, Juan Quintela, 2020/02/13
- [PULL 6/6] git: Make submodule check only needed modules, Juan Quintela, 2020/02/13
- Re: [PULL 0/6] Pull migration patches, Peter Maydell, 2020/02/14