Revision 29ae8a41 migration.c
b/migration.c | ||
---|---|---|
36 | 36 |
#endif |
37 | 37 |
|
38 | 38 |
enum { |
39 |
MIG_STATE_ERROR, |
|
39 |
MIG_STATE_ERROR = -1, |
|
40 |
MIG_STATE_NONE, |
|
40 | 41 |
MIG_STATE_SETUP, |
41 | 42 |
MIG_STATE_CANCELLED, |
42 | 43 |
MIG_STATE_ACTIVE, |
... | ... | |
63 | 64 |
MigrationState *migrate_get_current(void) |
64 | 65 |
{ |
65 | 66 |
static MigrationState current_migration = { |
66 |
.state = MIG_STATE_SETUP,
|
|
67 |
.state = MIG_STATE_NONE,
|
|
67 | 68 |
.bandwidth_limit = MAX_THROTTLE, |
68 | 69 |
.xbzrle_cache_size = DEFAULT_MIGRATE_CACHE_SIZE, |
69 | 70 |
.mbps = -1, |
... | ... | |
184 | 185 |
MigrationState *s = migrate_get_current(); |
185 | 186 |
|
186 | 187 |
switch (s->state) { |
187 |
case MIG_STATE_SETUP:
|
|
188 |
case MIG_STATE_NONE:
|
|
188 | 189 |
/* no migration has happened ever */ |
189 | 190 |
break; |
191 |
case MIG_STATE_SETUP: |
|
192 |
info->has_status = true; |
|
193 |
info->status = g_strdup("setup"); |
|
194 |
break; |
|
190 | 195 |
case MIG_STATE_ACTIVE: |
191 | 196 |
info->has_status = true; |
192 | 197 |
info->status = g_strdup("active"); |
... | ... | |
257 | 262 |
MigrationState *s = migrate_get_current(); |
258 | 263 |
MigrationCapabilityStatusList *cap; |
259 | 264 |
|
260 |
if (s->state == MIG_STATE_ACTIVE) { |
|
265 |
if (s->state == MIG_STATE_ACTIVE || s->state == MIG_STATE_SETUP) {
|
|
261 | 266 |
error_set(errp, QERR_MIGRATION_ACTIVE); |
262 | 267 |
return; |
263 | 268 |
} |
... | ... | |
392 | 397 |
params.blk = blk; |
393 | 398 |
params.shared = inc; |
394 | 399 |
|
395 |
if (s->state == MIG_STATE_ACTIVE) { |
|
400 |
if (s->state == MIG_STATE_ACTIVE || s->state == MIG_STATE_SETUP) {
|
|
396 | 401 |
error_set(errp, QERR_MIGRATION_ACTIVE); |
397 | 402 |
return; |
398 | 403 |
} |
... | ... | |
542 | 547 |
DPRINTF("beginning savevm\n"); |
543 | 548 |
qemu_savevm_state_begin(s->file, &s->params); |
544 | 549 |
|
550 |
migrate_set_state(s, MIG_STATE_SETUP, MIG_STATE_ACTIVE); |
|
551 |
|
|
545 | 552 |
while (s->state == MIG_STATE_ACTIVE) { |
546 | 553 |
int64_t current_time; |
547 | 554 |
uint64_t pending_size; |
... | ... | |
632 | 639 |
|
633 | 640 |
void migrate_fd_connect(MigrationState *s) |
634 | 641 |
{ |
635 |
s->state = MIG_STATE_ACTIVE;
|
|
636 |
trace_migrate_set_state(MIG_STATE_ACTIVE);
|
|
642 |
s->state = MIG_STATE_SETUP;
|
|
643 |
trace_migrate_set_state(MIG_STATE_SETUP);
|
|
637 | 644 |
|
638 | 645 |
/* This is a best 1st approximation. ns to ms */ |
639 | 646 |
s->expected_downtime = max_downtime/1000000; |
Also available in: Unified diff