X-Git-Url: https://git.proxmox.com/?a=blobdiff_plain;f=migration.c;h=bfbc34544a30a5ab2959bb3fe3debbd4944cb076;hb=0565700d7859bca6cb0e74c3c98f5fd1201559b5;hp=185d11260d9e6d31fb5906eb741189c7dc624583;hpb=6582d3e8be98cf8171489793e094aee94a1276ce;p=qemu.git diff --git a/migration.c b/migration.c index 185d11260..bfbc34544 100644 --- a/migration.c +++ b/migration.c @@ -99,7 +99,7 @@ static void process_incoming_migration_co(void *opaque) qemu_fclose(f); if (ret < 0) { fprintf(stderr, "load of migration failed\n"); - exit(0); + exit(EXIT_FAILURE); } qemu_announce_self(); DPRINTF("successfully loaded vm state\n"); @@ -121,7 +121,7 @@ void process_incoming_migration(QEMUFile *f) int fd = qemu_get_fd(f); assert(fd != -1); - socket_set_nonblock(fd); + qemu_set_nonblock(fd); qemu_coroutine_enter(co, f); } @@ -197,11 +197,11 @@ MigrationInfo *qmp_query_migrate(Error **errp) info->ram->remaining = ram_bytes_remaining(); info->ram->total = ram_bytes_total(); info->ram->duplicate = dup_mig_pages_transferred(); + info->ram->skipped = skipped_mig_pages_transferred(); info->ram->normal = norm_mig_pages_transferred(); info->ram->normal_bytes = norm_mig_bytes_transferred(); info->ram->dirty_pages_rate = s->dirty_pages_rate; - if (blk_mig_active()) { info->has_disk = true; info->disk = g_malloc0(sizeof(*info->disk)); @@ -227,6 +227,7 @@ MigrationInfo *qmp_query_migrate(Error **errp) info->ram->remaining = 0; info->ram->total = ram_bytes_total(); info->ram->duplicate = dup_mig_pages_transferred(); + info->ram->skipped = skipped_mig_pages_transferred(); info->ram->normal = norm_mig_pages_transferred(); info->ram->normal_bytes = norm_mig_bytes_transferred(); break; @@ -497,7 +498,6 @@ static void *migration_thread(void *opaque) { MigrationState *s = opaque; int64_t initial_time = qemu_get_clock_ms(rt_clock); - int64_t sleep_time = 0; int64_t initial_bytes = 0; int64_t max_size = 0; int64_t start_time = initial_time; @@ -540,7 +540,7 @@ static void *migration_thread(void *opaque) current_time = qemu_get_clock_ms(rt_clock); if (current_time >= initial_time + BUFFER_DELAY) { uint64_t transferred_bytes = qemu_ftell(s->file) - initial_bytes; - uint64_t time_spent = current_time - initial_time - sleep_time; + uint64_t time_spent = current_time - initial_time; double bandwidth = transferred_bytes / time_spent; max_size = bandwidth * migrate_max_downtime() / 1000000; @@ -554,14 +554,12 @@ static void *migration_thread(void *opaque) } qemu_file_reset_rate_limit(s->file); - sleep_time = 0; initial_time = current_time; initial_bytes = qemu_ftell(s->file); } if (qemu_file_rate_limit(s->file)) { /* usleep expects microseconds */ g_usleep((initial_time + BUFFER_DELAY - current_time)*1000); - sleep_time += qemu_get_clock_ms(rt_clock) - current_time; } }