120a519a0SJuan Quintela /* 220a519a0SJuan Quintela * QEMU save vm functions 320a519a0SJuan Quintela * 420a519a0SJuan Quintela * Copyright (c) 2003-2008 Fabrice Bellard 520a519a0SJuan Quintela * Copyright (c) 2009-2017 Red Hat Inc 620a519a0SJuan Quintela * 720a519a0SJuan Quintela * Authors: 820a519a0SJuan Quintela * Juan Quintela <quintela@redhat.com> 920a519a0SJuan Quintela * 1020a519a0SJuan Quintela * This work is licensed under the terms of the GNU GPL, version 2 or later. 1120a519a0SJuan Quintela * See the COPYING file in the top-level directory. 1220a519a0SJuan Quintela */ 1320a519a0SJuan Quintela 1420a519a0SJuan Quintela #ifndef MIGRATION_SAVEVM_H 1520a519a0SJuan Quintela #define MIGRATION_SAVEVM_H 1620a519a0SJuan Quintela 17c3d2e2e7SJuan Quintela #define QEMU_VM_FILE_MAGIC 0x5145564d 18c3d2e2e7SJuan Quintela #define QEMU_VM_FILE_VERSION_COMPAT 0x00000002 19c3d2e2e7SJuan Quintela #define QEMU_VM_FILE_VERSION 0x00000003 20c3d2e2e7SJuan Quintela 21c3d2e2e7SJuan Quintela #define QEMU_VM_EOF 0x00 22c3d2e2e7SJuan Quintela #define QEMU_VM_SECTION_START 0x01 23c3d2e2e7SJuan Quintela #define QEMU_VM_SECTION_PART 0x02 24c3d2e2e7SJuan Quintela #define QEMU_VM_SECTION_END 0x03 25c3d2e2e7SJuan Quintela #define QEMU_VM_SECTION_FULL 0x04 26c3d2e2e7SJuan Quintela #define QEMU_VM_SUBSECTION 0x05 27c3d2e2e7SJuan Quintela #define QEMU_VM_VMDESCRIPTION 0x06 28c3d2e2e7SJuan Quintela #define QEMU_VM_CONFIGURATION 0x07 29c3d2e2e7SJuan Quintela #define QEMU_VM_COMMAND 0x08 30c3d2e2e7SJuan Quintela #define QEMU_VM_SECTION_FOOTER 0x7e 31c3d2e2e7SJuan Quintela 3220a519a0SJuan Quintela bool qemu_savevm_state_blocked(Error **errp); 333af8554bSDr. David Alan Gilbert void qemu_savevm_non_migratable_list(strList **reasons); 3408fc4cb5SAvihai Horon int qemu_savevm_state_prepare(Error **errp); 35*057a2009SCédric Le Goater int qemu_savevm_state_setup(QEMUFile *f, Error **errp); 36c7e0acd5SJens Freimann bool qemu_savevm_state_guest_unplug_pending(void); 37d1b8eadbSPeter Xu int qemu_savevm_state_resume_prepare(MigrationState *s); 3820a519a0SJuan Quintela void qemu_savevm_state_header(QEMUFile *f); 3920a519a0SJuan Quintela int qemu_savevm_state_iterate(QEMUFile *f, bool postcopy); 4020a519a0SJuan Quintela void qemu_savevm_state_cleanup(void); 4120a519a0SJuan Quintela void qemu_savevm_state_complete_postcopy(QEMUFile *f); 42a1fbe750SFam Zheng int qemu_savevm_state_complete_precopy(QEMUFile *f, bool iterable_only, 43a1fbe750SFam Zheng bool inactivate_disks); 4424beea4eSJuan Quintela void qemu_savevm_state_pending_exact(uint64_t *must_precopy, 4524beea4eSJuan Quintela uint64_t *can_postcopy); 4624beea4eSJuan Quintela void qemu_savevm_state_pending_estimate(uint64_t *must_precopy, 4724beea4eSJuan Quintela uint64_t *can_postcopy); 4820a519a0SJuan Quintela void qemu_savevm_send_ping(QEMUFile *f, uint32_t value); 4920a519a0SJuan Quintela void qemu_savevm_send_open_return_path(QEMUFile *f); 5020a519a0SJuan Quintela int qemu_savevm_send_packaged(QEMUFile *f, const uint8_t *buf, size_t len); 5120a519a0SJuan Quintela void qemu_savevm_send_postcopy_advise(QEMUFile *f); 5220a519a0SJuan Quintela void qemu_savevm_send_postcopy_listen(QEMUFile *f); 5320a519a0SJuan Quintela void qemu_savevm_send_postcopy_run(QEMUFile *f); 543f5875ecSPeter Xu void qemu_savevm_send_postcopy_resume(QEMUFile *f); 55f25d4225SPeter Xu void qemu_savevm_send_recv_bitmap(QEMUFile *f, char *block_name); 5620a519a0SJuan Quintela 5720a519a0SJuan Quintela void qemu_savevm_send_postcopy_ram_discard(QEMUFile *f, const char *name, 5820a519a0SJuan Quintela uint16_t len, 5920a519a0SJuan Quintela uint64_t *start_list, 6020a519a0SJuan Quintela uint64_t *length_list); 61aad555c2SZhang Chen void qemu_savevm_send_colo_enable(QEMUFile *f); 623f6df99dSZhang Chen void qemu_savevm_live_state(QEMUFile *f); 633f6df99dSZhang Chen int qemu_save_device_state(QEMUFile *f); 6420a519a0SJuan Quintela 6520a519a0SJuan Quintela int qemu_loadvm_state(QEMUFile *f); 66acb5ea86SJuan Quintela void qemu_loadvm_state_cleanup(void); 673f6df99dSZhang Chen int qemu_loadvm_state_main(QEMUFile *f, MigrationIncomingState *mis); 683f6df99dSZhang Chen int qemu_load_device_state(QEMUFile *f); 691b4adb10SAvihai Horon int qemu_loadvm_approve_switchover(void); 708518278aSAndrey Gruzdev int qemu_savevm_state_complete_precopy_non_iterable(QEMUFile *f, 718518278aSAndrey Gruzdev bool in_postcopy, bool inactivate_disks); 7220a519a0SJuan Quintela 7320a519a0SJuan Quintela #endif 74