---
migration.c | 19 ++++++++++---------
1 files changed, 10 insertions(+), 9 deletions(-)
diff --git a/migration.c b/migration.c
index c382383..ea50a6f 100644
--- a/migration.c
+++ b/migration.c
@@ -31,14 +31,14 @@
do { } while (0)
#endif
-/* Migration speed throttling */
-static int64_t max_throttle = (32<< 20);
+#define MAX_THROTTLE (32<< 20) /* Migration speed throttling */
/* When we add fault tolerance, we could have several
migrations at once. For now we don't need to add
dynamic creation of migration */
static MigrationState current_migration_static = {
.state = MIG_STATE_NONE,
+ .bandwidth_limit = MAX_THROTTLE,
};
static MigrationState *current_migration =¤t_migration_static;
@@ -385,14 +385,14 @@ void migrate_fd_connect(MigrationState *s)
migrate_fd_put_ready(s);
}
-static void migrate_init_state(Monitor *mon, int64_t bandwidth_limit,
- int detach, int blk, int inc)
+static void migrate_init_state(Monitor *mon, int detach, int blk, int inc)
{
+ int64_t bandwidth_limit = current_migration->bandwidth_limit;
+
memset(current_migration, 0, sizeof(current_migration));
+ current_migration->bandwidth_limit = bandwidth_limit;
current_migration->blk = blk;
current_migration->shared = inc;
- current_migration->mon = NULL;
- current_migration->bandwidth_limit = bandwidth_limit;
current_migration->state = MIG_STATE_NONE;
if (!detach) {
@@ -418,7 +418,7 @@ int do_migrate(Monitor *mon, const QDict *qdict, QObject
**ret_data)
return -1;
}
- migrate_init_state(mon, max_throttle, detach, blk, inc);
+ migrate_init_state(mon, detach, blk, inc);
if (strstart(uri, "tcp:",&p)) {
ret = tcp_start_outgoing_migration(current_migration, p);
@@ -458,9 +458,10 @@ int do_migrate_set_speed(Monitor *mon, const QDict *qdict,
QObject **ret_data)
if (d< 0) {
d = 0;
}
- max_throttle = d;
+ current_migration->bandwidth_limit = d;
- qemu_file_set_rate_limit(current_migration->file, max_throttle);
+ qemu_file_set_rate_limit(current_migration->file,
+ current_migration->bandwidth_limit);
return 0;
}