History | View | Annotate | Download (14.1 kB)
block migration: Skip zero-sized disks
No need to migrate emptiness (risking divide by zero later on).
Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
block migration: Add support for restore progress reporting
Inject progress report in percentage into the block live stream. Thiscan be read out and displayed easily on restore.
block migration: Clean up use of total_sectors
We already save total_sectors in BlkMigDevState, let's use this valueduring the migration and avoid to recalculate it needlessly.
block migration: Consolidate mig_read_device_bulk into mig_save_device_bulk
Both functions share a lot of code, so make them one.
block migration: Consolidate block transmission
Based on the original patch by Pierre Riteau: Use a common blk_sendfunction to transmit a block.
block migration: Add error handling/propagation
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...
block migration: Report overall migration progress
So far progress reporting only works for the first block device. Fixthis by keeping an overall sum of sectors to be migratated, calculatingthe sum of all processed sectors, and finally basing the progress...
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: Fix outgoing progress output
Report progress of an outgoing live migration to the monitor instead ofstdout.
block migration: Report progress also via info migration
block migration: Fix coding style and whitespaces
No functional changes.
block migration: Rework constants API
Instead of duplicating the definition of constants or introducingtrivial retrieval functions move the SECTOR constants into the publicblock API. This also obsoletes sector_per_block in BlkMigState.
block migration: Avoid large stack buffer
Move a potentially large buffer from stack to heap.
block migration: Avoid indirection of block_mig_state
No need to push block_mig_state to the heap and, thus, establish anindirection.
block migration: Drop dead code
block migration: Switch device and block lists to QSIMPLEQ
Based on the original patch by Pierre Riteau.
block migration: Initialize remaining BlkMigState fields
In case we restart a migration, submitted, read_done, transferred, andprint_completion need to be reinitialized to 0.
Fix mingw32 build
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
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....