History | View | Annotate | Download (11 kB)
migration: respect exit status with exec:
This patch makes sure that if the exec: process exits with a non-zero returnstatus, we treat the migration as failed.
This fixes https://bugs.launchpad.net/qemu/+bug/391879
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
Monitor: Drop QMP documentation from code
Previous commit added QMP documentation to the qemu-monitor.hxfile, it's is a copy of this information.
While it's good to keep it near code, maintaining two copies ofthe same information is too hard and has little benefit as we...
Monitor: Convert do_migrate() to cmd_new_ret()
While there I'm also dropping a unneeded else clause (the lastone in the function).
Signed-off-by: Luiz Capitulino <lcapitulino@redhat.com>Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
Monitor: Convert simple handlers to cmd_new_ret()
The following handlers always succeed and hence can be convertedto cmd_new_ret() in the same commit.
- do_stop()- do_quit()- do_system_reset()- do_system_powerdown()- do_migrate_cancel()- do_qmp_capabilities()...
Monitor: remove unneeded checks
It's not needed to check the return of qobject_from_jsonf()anymore, as an assert() has been added there.
Do not use dprintf
dprintf is already claimed by POSIX1, and on at least one systemis implemented as a macro
[1] http://www.opengroup.org/onlinepubs/9699919799/functions/dprintf.html
Signed-off-by: malc <av1474@comtv.ru>
monitor: Use argument type 'b' for migrate_set_speed
Before, it used type 's', which strips quotes and interprets escapes,and is quite inappropriate for QMP.
Negative arguments are no flushed to zero. Before, they were cast touint32_t, which wrecked the sign....
monitor: convert do_migrate_set_speed() to QObject
Signed-off-by: Markus Armbruster <armbru@redhat.com>Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
monitor: Use argument type 'T' for migrate_set_downtime
monitor: convert do_migrate_set_downtime() to QObject
Revert "monitor: Convert do_migrate_set_speed() to QObject"
This reverts commit 3a4921047d514c336531c304bec362c4d138ebcc.
From Luiz:
do_migrate_set_speed() accepts a suffix for the 'value' argument and this is not good for QMP. We will have to add a new argument type to handle that and...
migration: Convert do_info_migrate() to QObject
Return a QDict, which may contain up to more two QDicts, dependingon the type of migration we're performing.
IMPORTANT: as a QInt stores a int64_t integer, RAM values are goingto be stored as int64_t and not as uint64_t as they are today. If...
live migration: Allow cleanup after cancellation or error
Introduce qemu_savevm_state_cancel and inject a stage -1 to cancel alive migration. This gives the involved subsystems a chance to clean updynamically allocated resources. Namely, the block migration layer can...
live migration: Propagate output monitor to callback handler
In order to allow proper progress reporting to the monitor thatinitiated the migration, forward the monitor reference through themigration layer down to SaveLiveStateHandler.
Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>...
block migration: Report progress also via info migration
Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
migration: Fix use of file after release
qemu_fclose frees the passed file structure, but do_migrate_set_speedmay access it later on. Fix it by setting file NULL inmigrate_fd_cleanup and checking for this.
migration: Catch multiple start commands
Block live migration
This patch introduces block migration called during live migration. Blockare being copied to the destination in an async way. First the code willtransfer the whole disk and then transfer all dirty blocks accumulted duringthe migration....
monitor: Convert do_migrate() to QObject
Error is still directly printed, as we are only convertingregular output.
monitor: Convert do_migrate_set_speed() to QObject
monitor: Convert do_migrate_cancel() to QObject
monitor: Port handler_1 to use QDict
This commit ports command handlers that receive one argument to usethe new monitor's dictionary.
monitor: Port handler_2 to use QDict
This commit ports command handlers that receive two arguments to usethe new monitor's dictionary.
monitor: Port handler_0 to use QDict
This commit ports command handlers that receive no arguments to usethe new monitor's dictionary.
It might seem no sense to do this, as the handlers have no arguments,but at the end of this porting work all handlers will have the same...
add file descriptor migration
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>Cc: Chris Lalancette <clalance@redhat.com>Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
Migration via unix sockets.
Implement migration via unix sockets. While you can fake this usingexec and netcat, this involves forking another process and isgenerally not very nice. By doing this directly in qemu, we can avoidthe copy through the external nc command. This is useful for...
flush pending aio requests
When we finish migration, there may be pending async io requestsin flight. If we don't flush it before stage3 starting, it might bethe case that the guest loses it.
Signed-off-by: Glauber Costa <glommer@redhat.com>Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
Make sure to only vm_start() a failed migration if we were running to beginwith.
set migration max downtime
provide a monitor command to allow one to set the maximumdowntime he is willing to suffer during migration, in seconds."ms", "us", "ns" and "s" are accepted as modifiers.
This parameter will be used by ram_save_live() code to determine...
add non-arbitrary migration stop condition
Currently, we're entering migration's stage 3 whena treshold of 10 pages remain to be transferred in the system.
This has hurt some users. However, any proposed threshold isarbitrary by nature, and would only shift the annoyance....
migrate_fd_close: delete associated io-handler before closing the fd
It may happen that the io-handler is still registered. That causesselect() to return with EBADF, not calling handlers for other fds.
The io-handler would be registered when (on the source) the whole state...
allow changing the speed of a running migration
This patch allow us to call migrate_set_speed on runningmigrations. This should allow mgmt tools to increase the allocatedbandwidth of a running migration if there is no progress, and theyreally want the migration to succeed....
augment info migrate with page status
This should be enough for management tools to realizewhether or not there is progress in migration. We can...
migrate.c: migrate_fd_put_buffer: Do not busyloop: stop writing if EWOULDBLOCK
The migration code is non-blocking, designed for live migration.
Practically migrate_fd_put_buffer busy-loops trying to write, ason many machines EWOULDBLOCK==EAGAIN (look in include/asm-generic/errno.h)....
propagate error on failed completion (Glauber Costa)
migrate_fd_put_ready() calls qemu_savevm_state_complete(),but the later can fail.
If it happens, re-start the vm and propagate the error up
Based on a patch by Yaniv Kamay
Signed-off-by: Glauber Costa <glommer@redhat.com>...
monitor: Introduce MONITOR_USE_READLINE flag (Jan Kiszka)
This allows to create monitor terminals that do not make use of theinteractive readline back-end but rather send complete commands. Thepass-through monitor interface of the gdbstub will be an example....
monitor: Decouple terminals (Jan Kiszka)
Currently all registered (and activate) monitor terminals work inbroadcast mode: Everyone sees what someone else types on some otherterminal and what the monitor reports back. This model is broken whenyou have a management monitor terminal that is automatically operated...
monitor: Rework API (Jan Kiszka)
Refactor the monitor API and prepare it for decoupled terminals:term_print functions are renamed to monitor_* and all monitor servicesgain a new parameter (mon) that will once refer to the monitor instancethe output is supposed to appear on. However, the argument remains...
Reintroduce migrate-to-exec: support (Charles Duffy)
KVM's live migration support included support for exec: URLs, allowing systemstate to be written or received via an arbitrary popen()ed subprocess. Thisprovides a convenient way to pipe state through a compression algorithm or an...
Fix whitespace in migration code.
Replace tabs with spaces.
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5527 c046a42c-6fe2-441c-8c8c-71466251a162
Introduce TCP live migration protocol
This patch introduces a tcp protocol for live migration. It can be used asfollows:
qemu-system-x86_64 -hda ~/images/linux-test.img -monitor stdio <vm runs for a while>(qemu) migrate tcp:localhost:1025
On the same system:...
Introduce UI for live migration
This patch introduces a command line parameter and monitor command for startinga live migration. The next patch will provide an example of how to use theseparameters.
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>...