mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-07-27 04:13:53 -06:00
migration: Add MIG_CMD_SWITCHOVER_START and its load handler
This QEMU_VM_COMMAND sub-command and its switchover_start SaveVMHandler is used to mark the switchover point in main migration stream. It can be used to inform the destination that all pre-switchover main migration stream data has been sent/received so it can start to process post-switchover data that it might have received via other migration channels like the multifd ones. Add also the relevant MigrationState bit stream compatibility property and its hw_compat entry. Reviewed-by: Fabiano Rosas <farosas@suse.de> Reviewed-by: Zhang Chen <zhangckid@gmail.com> # for the COLO part Signed-off-by: Maciej S. Szmigiero <maciej.szmigiero@oracle.com> Link: https://lore.kernel.org/qemu-devel/311be6da85fc7e49a7598684d80aa631778dcbce.1741124640.git.maciej.szmigiero@oracle.com Signed-off-by: Cédric Le Goater <clg@redhat.com>
This commit is contained in:
parent
b5aa74968b
commit
4e55cb3cde
12 changed files with 87 additions and 0 deletions
|
@ -620,7 +620,9 @@ class MigrationDump(object):
|
|||
QEMU_VM_SUBSECTION = 0x05
|
||||
QEMU_VM_VMDESCRIPTION = 0x06
|
||||
QEMU_VM_CONFIGURATION = 0x07
|
||||
QEMU_VM_COMMAND = 0x08
|
||||
QEMU_VM_SECTION_FOOTER= 0x7e
|
||||
QEMU_MIG_CMD_SWITCHOVER_START = 0x0b
|
||||
|
||||
def __init__(self, filename):
|
||||
self.section_classes = {
|
||||
|
@ -685,6 +687,15 @@ class MigrationDump(object):
|
|||
elif section_type == self.QEMU_VM_SECTION_PART or section_type == self.QEMU_VM_SECTION_END:
|
||||
section_id = file.read32()
|
||||
self.sections[section_id].read()
|
||||
elif section_type == self.QEMU_VM_COMMAND:
|
||||
command_type = file.read16()
|
||||
command_data_len = file.read16()
|
||||
if command_type != self.QEMU_MIG_CMD_SWITCHOVER_START:
|
||||
raise Exception("Unknown QEMU_VM_COMMAND: %x" %
|
||||
(command_type))
|
||||
if command_data_len != 0:
|
||||
raise Exception("Invalid SWITCHOVER_START length: %x" %
|
||||
(command_data_len))
|
||||
elif section_type == self.QEMU_VM_SECTION_FOOTER:
|
||||
read_section_id = file.read32()
|
||||
if read_section_id != section_id:
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue