Go to file
Juan Quintela e4ed1541ac savevm: New save live migration method: pending
Code just now does (simplified for clarity)

    if (qemu_savevm_state_iterate(s->file) == 1) {
       vm_stop_force_state(RUN_STATE_FINISH_MIGRATE);
       qemu_savevm_state_complete(s->file);
    }

Problem here is that qemu_savevm_state_iterate() returns 1 when it
knows that remaining memory to sent takes less than max downtime.

But this means that we could end spending 2x max_downtime, one
downtime in qemu_savevm_iterate, and the other in
qemu_savevm_state_complete.

Changed code to:

    pending_size = qemu_savevm_state_pending(s->file, max_size);
    DPRINTF("pending size %lu max %lu\n", pending_size, max_size);
    if (pending_size >= max_size) {
        ret = qemu_savevm_state_iterate(s->file);
     } else {
        vm_stop_force_state(RUN_STATE_FINISH_MIGRATE);
        qemu_savevm_state_complete(s->file);
     }

So what we do is: at current network speed, we calculate the maximum
number of bytes we can sent: max_size.

Then we ask every save_live section how much they have pending.  If
they are less than max_size, we move to complete phase, otherwise we
do an iterate one.

This makes things much simpler, because now individual sections don't
have to caluclate the bandwidth (it was implossible to do right from
there).

Signed-off-by: Juan Quintela <quintela@redhat.com>

Reviewed-by: Paolo Bonzini <pbonzini@redhat.com>
2012-12-20 23:09:25 +01:00
audio softmmu: move include files to include/sysemu/ 2012-12-19 08:32:45 +01:00
backends softmmu: move remaining include files to include/ subdirectories 2012-12-19 08:32:46 +01:00
block softmmu: move include files to include/sysemu/ 2012-12-19 08:32:45 +01:00
bsd-user misc: move include files to include/qemu/ 2012-12-19 08:32:39 +01:00
default-configs target-sparc64: disable VGA cirrus 2012-10-27 14:36:04 +00:00
disas build: kill libdis, move disassemblers to disas/ 2012-12-19 08:29:06 +01:00
docs docs: add spice-port-fqdn.txt 2012-12-17 14:01:41 +01:00
fpu fpu: move public header file to include/fpu 2012-12-19 08:32:46 +01:00
fsdev misc: move include files to include/qemu/ 2012-12-19 08:32:39 +01:00
gdb-xml
hw Merge remote-tracking branch 'bonzini/header-dirs' into staging 2012-12-19 17:15:39 -06:00
include savevm: New save live migration method: pending 2012-12-20 23:09:25 +01:00
ldscripts build: create ldscripts/ 2012-12-19 08:29:06 +01:00
libcacard misc: move include files to include/qemu/ 2012-12-19 08:32:39 +01:00
linux-headers linux-headers: Update to 3.7-rc5 2012-11-13 12:27:40 -07:00
linux-user Merge remote-tracking branch 'bonzini/header-dirs' into staging 2012-12-19 17:15:39 -06:00
net Merge remote-tracking branch 'bonzini/header-dirs' into staging 2012-12-19 17:15:39 -06:00
pc-bios Merge branch 'ppc-for-upstream' of git://repo.or.cz/qemu/agraf 2012-12-15 09:05:26 +00:00
pixman@97336fad32 qapi: move include files to include/qobject/ 2012-12-19 08:31:31 +01:00
qapi misc: move include files to include/qemu/ 2012-12-19 08:32:39 +01:00
qga misc: move include files to include/qemu/ 2012-12-19 08:32:39 +01:00
QMP qmp: add pull_event function 2012-10-24 10:26:22 +02:00
qom misc: move include files to include/qemu/ 2012-12-19 08:32:39 +01:00
roms Merge branch 'ppc-for-upstream' of git://repo.or.cz/qemu/agraf 2012-12-15 09:05:26 +00:00
scripts misc: move include files to include/qemu/ 2012-12-19 08:32:39 +01:00
slirp softmmu: move remaining include files to include/ subdirectories 2012-12-19 08:32:46 +01:00
stubs softmmu: move include files to include/sysemu/ 2012-12-19 08:32:45 +01:00
sysconfigs/target Eliminate cpus-x86_64.conf file 2012-09-21 15:12:58 +02:00
target-alpha fpu: move public header file to include/fpu 2012-12-19 08:32:46 +01:00
target-arm fpu: move public header file to include/fpu 2012-12-19 08:32:46 +01:00
target-cris misc: move include files to include/qemu/ 2012-12-19 08:32:39 +01:00
target-i386 exec: change RAM list to a TAILQ 2012-12-20 23:08:47 +01:00
target-lm32 misc: move include files to include/qemu/ 2012-12-19 08:32:39 +01:00
target-m68k fpu: move public header file to include/fpu 2012-12-19 08:32:46 +01:00
target-microblaze fpu: move public header file to include/fpu 2012-12-19 08:32:46 +01:00
target-mips fpu: move public header file to include/fpu 2012-12-19 08:32:46 +01:00
target-openrisc fpu: move public header file to include/fpu 2012-12-19 08:32:46 +01:00
target-ppc fpu: move public header file to include/fpu 2012-12-19 08:32:46 +01:00
target-s390x fpu: move public header file to include/fpu 2012-12-19 08:32:46 +01:00
target-sh4 fpu: move public header file to include/fpu 2012-12-19 08:32:46 +01:00
target-sparc fpu: move public header file to include/fpu 2012-12-19 08:32:46 +01:00
target-unicore32 fpu: move public header file to include/fpu 2012-12-19 08:32:46 +01:00
target-xtensa softmmu: move include files to include/sysemu/ 2012-12-19 08:32:45 +01:00
tcg misc: move include files to include/qemu/ 2012-12-19 08:32:39 +01:00
tests misc: move include files to include/qemu/ 2012-12-19 08:32:39 +01:00
trace misc: move include files to include/qemu/ 2012-12-19 08:32:39 +01:00
ui Merge remote-tracking branch 'bonzini/header-dirs' into staging 2012-12-19 17:15:39 -06:00
.exrc qemu: add .exrc 2012-09-07 09:02:44 +03:00
.gitignore Merge remote-tracking branch 'bonzini/header-dirs' into staging 2012-12-19 17:15:39 -06:00
.gitmodules pixman: add submodule 2012-11-01 13:10:06 +01:00
.mailmap Add a .mailmap to map pre-git-conversion authors to friendly names 2011-12-12 17:06:21 -06:00
acl.c misc: move include files to include/qemu/ 2012-12-19 08:32:39 +01:00
aes.c block: move include files to include/block/ 2012-12-19 08:31:31 +01:00
aio-posix.c misc: move include files to include/qemu/ 2012-12-19 08:32:39 +01:00
aio-win32.c misc: move include files to include/qemu/ 2012-12-19 08:32:39 +01:00
arch_init.c savevm: New save live migration method: pending 2012-12-20 23:09:25 +01:00
async.c misc: move include files to include/qemu/ 2012-12-19 08:32:39 +01:00
balloon.c softmmu: move include files to include/sysemu/ 2012-12-19 08:32:45 +01:00
bitmap.c misc: move include files to include/qemu/ 2012-12-19 08:32:39 +01:00
bitops.c misc: move include files to include/qemu/ 2012-12-19 08:32:39 +01:00
block-migration.c savevm: New save live migration method: pending 2012-12-20 23:09:25 +01:00
block.c softmmu: move include files to include/sysemu/ 2012-12-19 08:32:45 +01:00
blockdev-nbd.c softmmu: move include files to include/sysemu/ 2012-12-19 08:32:45 +01:00
blockdev.c softmmu: move include files to include/sysemu/ 2012-12-19 08:32:45 +01:00
blockjob.c misc: move include files to include/qemu/ 2012-12-19 08:32:39 +01:00
bt-host.c softmmu: move remaining include files to include/ subdirectories 2012-12-19 08:32:46 +01:00
bt-vhci.c softmmu: move remaining include files to include/ subdirectories 2012-12-19 08:32:46 +01:00
buffered_file.c savevm: New save live migration method: pending 2012-12-20 23:09:25 +01:00
buffered_file.h migration: make qemu_fopen_ops_buffered() return void 2012-12-20 23:09:25 +01:00
cache-utils.c misc: move include files to include/qemu/ 2012-12-19 08:32:39 +01:00
Changelog fix some common typos 2012-05-14 07:27:24 +02:00
cmd.c misc: move include files to include/qemu/ 2012-12-19 08:32:39 +01:00
cmd.h
CODING_STYLE Replace Qemu by QEMU in internal documentation 2012-04-07 13:58:25 +00:00
compatfd.c misc: move include files to include/qemu/ 2012-12-19 08:32:39 +01:00
configure Merge remote-tracking branch 'bonzini/header-dirs' into staging 2012-12-19 17:15:39 -06:00
COPYING
COPYING.LIB
coroutine-gthread.c block: move include files to include/block/ 2012-12-19 08:31:31 +01:00
coroutine-sigaltstack.c block: move include files to include/block/ 2012-12-19 08:31:31 +01:00
coroutine-ucontext.c block: move include files to include/block/ 2012-12-19 08:31:31 +01:00
coroutine-win32.c block: move include files to include/block/ 2012-12-19 08:31:31 +01:00
cpu-exec.c softmmu: move include files to include/sysemu/ 2012-12-19 08:32:45 +01:00
cpus.c softmmu: move include files to include/sysemu/ 2012-12-19 08:32:45 +01:00
cputlb.c exec: move include files to include/exec/ 2012-12-19 08:31:31 +01:00
cutils.c misc: move include files to include/qemu/ 2012-12-19 08:32:39 +01:00
device_tree.c softmmu: move include files to include/sysemu/ 2012-12-19 08:32:45 +01:00
disas.c monitor: move include files to include/monitor/ 2012-12-19 08:31:32 +01:00
dma-helpers.c softmmu: move include files to include/sysemu/ 2012-12-19 08:32:45 +01:00
dump-stub.c softmmu: move include files to include/sysemu/ 2012-12-19 08:32:45 +01:00
dump.c exec: change RAM list to a TAILQ 2012-12-20 23:08:47 +01:00
envlist.c misc: move include files to include/qemu/ 2012-12-19 08:32:39 +01:00
error.c qapi: move include files to include/qobject/ 2012-12-19 08:31:31 +01:00
event_notifier-posix.c softmmu: move remaining include files to include/ subdirectories 2012-12-19 08:32:46 +01:00
event_notifier-win32.c misc: move include files to include/qemu/ 2012-12-19 08:32:39 +01:00
exec.c protect the ramlist with a separate mutex 2012-12-20 23:08:47 +01:00
gdbstub.c softmmu: move remaining include files to include/ subdirectories 2012-12-19 08:32:46 +01:00
HACKING HACKING: List areas where we may rely on impdef C behaviour 2012-12-08 14:27:40 +00:00
hmp-commands.hx trace: Remove "info trace" from documents 2012-11-16 13:35:48 +01:00
hmp.c softmmu: move remaining include files to include/ subdirectories 2012-12-19 08:32:46 +01:00
hmp.h qapi: move include files to include/qobject/ 2012-12-19 08:31:31 +01:00
host-utils.c misc: move include files to include/qemu/ 2012-12-19 08:32:39 +01:00
iohandler.c misc: move include files to include/qemu/ 2012-12-19 08:32:39 +01:00
ioport.c exec: move include files to include/exec/ 2012-12-19 08:31:31 +01:00
iov.c misc: move include files to include/qemu/ 2012-12-19 08:32:39 +01:00
json-lexer.c qapi: move include files to include/qobject/ 2012-12-19 08:31:31 +01:00
json-parser.c qapi: move include files to include/qobject/ 2012-12-19 08:31:31 +01:00
json-streamer.c qapi: move include files to include/qobject/ 2012-12-19 08:31:31 +01:00
kvm-all.c softmmu: move include files to include/sysemu/ 2012-12-19 08:32:45 +01:00
kvm-stub.c softmmu: move include files to include/sysemu/ 2012-12-19 08:32:45 +01:00
LICENSE LICENSE: There is no libqemu.a anymore 2011-12-09 11:25:22 +00:00
main-loop.c misc: move include files to include/qemu/ 2012-12-19 08:32:39 +01:00
MAINTAINERS MAINTAINERS: add hw/pci/ to list of PCI files 2012-12-12 23:41:03 +02:00
Makefile qemu-ga: move qemu-ga files to qga/ 2012-12-19 08:31:30 +01:00
Makefile.objs ui: move files to ui/ and include/ui/ 2012-12-19 08:31:30 +01:00
Makefile.target build: kill libuser 2012-12-19 08:29:06 +01:00
memory_mapping-stub.c softmmu: move include files to include/sysemu/ 2012-12-19 08:32:45 +01:00
memory_mapping.c exec: change RAM list to a TAILQ 2012-12-20 23:08:47 +01:00
memory.c softmmu: move include files to include/sysemu/ 2012-12-19 08:32:45 +01:00
migration-exec.c migration: make writes blocking 2012-12-20 23:09:25 +01:00
migration-fd.c migration: make writes blocking 2012-12-20 23:09:25 +01:00
migration-tcp.c migration: make writes blocking 2012-12-20 23:09:25 +01:00
migration-unix.c migration: make writes blocking 2012-12-20 23:09:25 +01:00
migration.c savevm: New save live migration method: pending 2012-12-20 23:09:25 +01:00
module.c misc: move include files to include/qemu/ 2012-12-19 08:32:39 +01:00
monitor.c softmmu: move remaining include files to include/ subdirectories 2012-12-19 08:32:46 +01:00
nbd.c misc: move include files to include/qemu/ 2012-12-19 08:32:39 +01:00
notify.c misc: move include files to include/qemu/ 2012-12-19 08:32:39 +01:00
os-posix.c softmmu: move include files to include/sysemu/ 2012-12-19 08:32:45 +01:00
os-win32.c softmmu: move include files to include/sysemu/ 2012-12-19 08:32:45 +01:00
osdep.c misc: move include files to include/qemu/ 2012-12-19 08:32:39 +01:00
oslib-posix.c softmmu: move include files to include/sysemu/ 2012-12-19 08:32:45 +01:00
oslib-win32.c softmmu: move include files to include/sysemu/ 2012-12-19 08:32:45 +01:00
page_cache.c migration: move include files to include/migration/ 2012-12-19 08:31:32 +01:00
path.c user: speed up init_paths a bit 2011-02-09 10:33:54 +02:00
pci-ids.txt
qapi-schema-test.json qapi: add struct-errors test case to test-qmp-output-visitor 2012-03-27 09:11:00 -03:00
qapi-schema.json slirp: Add domain-search option to slirp's DHCP server 2012-11-15 10:27:14 +01:00
qbool.c qapi: move include files to include/qobject/ 2012-12-19 08:31:31 +01:00
qdict-test-data.txt
qdict.c misc: move include files to include/qemu/ 2012-12-19 08:32:39 +01:00
qemu-bridge-helper.c misc: move include files to include/qemu/ 2012-12-19 08:32:39 +01:00
qemu-char.c Merge remote-tracking branch 'bonzini/header-dirs' into staging 2012-12-19 17:15:39 -06:00
qemu-config.c misc: move include files to include/qemu/ 2012-12-19 08:32:39 +01:00
qemu-coroutine-io.c misc: move include files to include/qemu/ 2012-12-19 08:32:39 +01:00
qemu-coroutine-lock.c misc: move include files to include/qemu/ 2012-12-19 08:32:39 +01:00
qemu-coroutine-sleep.c misc: move include files to include/qemu/ 2012-12-19 08:32:39 +01:00
qemu-coroutine.c block: move include files to include/block/ 2012-12-19 08:31:31 +01:00
qemu-doc.texi Documentation: Update image format information 2012-11-30 11:33:24 +01:00
qemu-error.c monitor: move include files to include/monitor/ 2012-12-19 08:31:32 +01:00
qemu-img-cmds.hx qemu-img: document 'info --backing-chain' 2012-10-24 10:26:19 +02:00
qemu-img.c softmmu: move include files to include/sysemu/ 2012-12-19 08:32:45 +01:00
qemu-img.texi Documentation: Update image format information 2012-11-30 11:33:24 +01:00
qemu-io.c misc: move include files to include/qemu/ 2012-12-19 08:32:39 +01:00
qemu-log.c misc: move include files to include/qemu/ 2012-12-19 08:32:39 +01:00
qemu-nbd.c block: move include files to include/block/ 2012-12-19 08:31:31 +01:00
qemu-nbd.texi Replace Qemu by QEMU in user visible documentation 2012-04-07 13:58:06 +00:00
qemu-option.c misc: move include files to include/qemu/ 2012-12-19 08:32:39 +01:00
qemu-options-wrapper.h vl.c: In qemu -h output, only print options for the arch we are running as 2011-12-19 10:27:33 -06:00
qemu-options.h vl.c: Move option generation logic into a wrapper file 2011-12-19 10:27:33 -06:00
qemu-options.hx spice-qemu-char: add spiceport chardev 2012-12-17 14:01:41 +01:00
qemu-progress.c softmmu: move include files to include/sysemu/ 2012-12-19 08:32:45 +01:00
qemu-seccomp.c softmmu: move include files to include/sysemu/ 2012-12-19 08:32:45 +01:00
qemu-sockets.c misc: move include files to include/qemu/ 2012-12-19 08:32:39 +01:00
qemu-tech.texi qemu-tech.texi: update implemented xtensa features list 2012-11-29 13:00:52 -06:00
qemu-thread-posix.c misc: move include files to include/qemu/ 2012-12-19 08:32:39 +01:00
qemu-thread-win32.c misc: move include files to include/qemu/ 2012-12-19 08:32:39 +01:00
qemu-timer-common.c misc: move include files to include/qemu/ 2012-12-19 08:32:39 +01:00
qemu-timer.c softmmu: move include files to include/sysemu/ 2012-12-19 08:32:45 +01:00
qemu-tool.c softmmu: move include files to include/sysemu/ 2012-12-19 08:32:45 +01:00
qemu-user.c monitor: move include files to include/monitor/ 2012-12-19 08:31:32 +01:00
qemu.sasl
qerror.c monitor: move include files to include/monitor/ 2012-12-19 08:31:32 +01:00
qfloat.c qapi: move include files to include/qobject/ 2012-12-19 08:31:31 +01:00
qint.c qapi: move include files to include/qobject/ 2012-12-19 08:31:31 +01:00
qjson.c qapi: move include files to include/qobject/ 2012-12-19 08:31:31 +01:00
qlist.c misc: move include files to include/qemu/ 2012-12-19 08:32:39 +01:00
qmp-commands.hx Merge remote-tracking branch 'kwolf/for-anthony' into staging 2012-10-29 10:34:05 -05:00
qmp.c softmmu: move remaining include files to include/ subdirectories 2012-12-19 08:32:46 +01:00
qstring.c qapi: move include files to include/qobject/ 2012-12-19 08:31:31 +01:00
qtest.c softmmu: move remaining include files to include/ subdirectories 2012-12-19 08:32:46 +01:00
readline.c monitor: move include files to include/monitor/ 2012-12-19 08:31:32 +01:00
README Update README 2011-12-11 17:50:43 -06:00
rules.mak build: add $(TARGET_DIR) to "GEN config-target.h" lines 2012-12-19 08:29:06 +01:00
savevm.c savevm: New save live migration method: pending 2012-12-20 23:09:25 +01:00
spice-qemu-char.c Merge remote-tracking branch 'bonzini/header-dirs' into staging 2012-12-19 17:15:39 -06:00
tcg-runtime.c
tci.c exec: move include files to include/exec/ 2012-12-19 08:31:31 +01:00
thread-pool.c misc: move include files to include/qemu/ 2012-12-19 08:32:39 +01:00
thunk.c exec: move include files to include/exec/ 2012-12-19 08:31:31 +01:00
TODO
trace-events spice-qemu-char: add spiceport chardev 2012-12-17 14:01:41 +01:00
translate-all.c misc: move include files to include/qemu/ 2012-12-19 08:32:39 +01:00
translate-all.h exec: move TB handling to translate-all.c 2012-12-16 08:28:41 +00:00
uri.c misc: move include files to include/qemu/ 2012-12-19 08:32:39 +01:00
user-exec.c Merge remote-tracking branch 'bonzini/header-dirs' into staging 2012-12-19 17:15:39 -06:00
VERSION Open up 1.4 development branch 2012-12-03 14:08:40 -06:00
version.rc
vl.c softmmu: move remaining include files to include/ subdirectories 2012-12-19 08:32:46 +01:00
xen-all.c Merge remote-tracking branch 'bonzini/header-dirs' into staging 2012-12-19 17:15:39 -06:00
xen-mapcache.c softmmu: move include files to include/sysemu/ 2012-12-19 08:32:45 +01:00
xen-stub.c exec: move include files to include/exec/ 2012-12-19 08:31:31 +01:00

Read the documentation in qemu-doc.html or on http://wiki.qemu.org

- QEMU team