master
h 86 lines 3.75 KB
Raw
1 /*
2 * QEMU save vm functions
3 *
4 * Copyright (c) 2003-2008 Fabrice Bellard
5 * Copyright (c) 2009-2017 Red Hat Inc
6 *
7 * Authors:
8 * Juan Quintela <quintela@redhat.com>
9 *
10 * This work is licensed under the terms of the GNU GPL, version 2 or later.
11 * See the COPYING file in the top-level directory.
12 */
13
14 #ifndef MIGRATION_SAVEVM_H
15 #define MIGRATION_SAVEVM_H
16
17 #include "migration/register.h"
18
19 #define QEMU_VM_FILE_MAGIC 0x5145564d
20 #define QEMU_VM_FILE_VERSION_COMPAT 0x00000002
21 #define QEMU_VM_FILE_VERSION 0x00000003
22
23 #define QEMU_VM_EOF 0x00
24 #define QEMU_VM_SECTION_START 0x01
25 #define QEMU_VM_SECTION_PART 0x02
26 #define QEMU_VM_SECTION_END 0x03
27 #define QEMU_VM_SECTION_FULL 0x04
28 #define QEMU_VM_SUBSECTION 0x05
29 #define QEMU_VM_VMDESCRIPTION 0x06
30 #define QEMU_VM_CONFIGURATION 0x07
31 #define QEMU_VM_COMMAND 0x08
32 #define QEMU_VM_SECTION_FOOTER 0x7e
33
34 #define QEMU_VM_PING_PACKAGED_LOADED 0x42
35
36 bool qemu_savevm_state_blocked(Error **errp);
37 void qemu_savevm_non_migratable_list(strList **reasons);
38 int qemu_savevm_state_prepare(Error **errp);
39 int qemu_savevm_state_do_setup(QEMUFile *f, Error **errp);
40 bool qemu_savevm_state_guest_unplug_pending(void);
41 int qemu_savevm_state_resume_prepare(MigrationState *s);
42 void qemu_savevm_send_header(QEMUFile *f);
43 void qemu_savevm_state_header(QEMUFile *f);
44 int qemu_savevm_state_iterate(QEMUFile *f, bool postcopy);
45 void qemu_savevm_state_cleanup(void);
46 void qemu_savevm_state_complete_postcopy(QEMUFile *f);
47 bool qemu_savevm_state_complete_precopy(MigrationState *s, Error **errp);
48 void qemu_savevm_query_pending_iter(MigrationState *s, MigPendingData *pending,
49 bool exact);
50 bool qemu_savevm_query_pending_final(MigrationState *s,
51 MigPendingData *pending, Error **errp);
52 int qemu_savevm_state_complete_precopy_iterable(QEMUFile *f, bool in_postcopy);
53 bool qemu_savevm_state_postcopy_prepare(QEMUFile *f, Error **errp);
54 void qemu_savevm_state_end(QEMUFile *f);
55 void qemu_savevm_state_end_precopy(MigrationState *s, QEMUFile *f);
56 void qemu_savevm_send_ping(QEMUFile *f, uint32_t value);
57 void qemu_savevm_send_open_return_path(QEMUFile *f);
58 int qemu_savevm_send_packaged(QEMUFile *f, const uint8_t *buf, size_t len);
59 void qemu_savevm_send_postcopy_advise(QEMUFile *f);
60 void qemu_savevm_send_postcopy_listen(QEMUFile *f);
61 void qemu_savevm_send_postcopy_run(QEMUFile *f);
62 void qemu_savevm_send_postcopy_resume(QEMUFile *f);
63 void qemu_savevm_send_recv_bitmap(QEMUFile *f, char *block_name);
64 void qemu_savevm_maybe_send_switchover_start(QEMUFile *f);
65
66 void qemu_savevm_send_postcopy_ram_discard(QEMUFile *f, const char *name,
67 uint16_t len,
68 uint64_t *start_list,
69 uint64_t *length_list);
70 int qemu_save_device_state(QEMUFile *f, Error **errp);
71 int qemu_loadvm_state(QEMUFile *f, Error **errp);
72 void qemu_loadvm_state_cleanup(MigrationIncomingState *mis);
73 void qemu_loadvm_run_fast_snapshot_load(QEMUFile *f,
74 MigrationIncomingState *mis);
75 int qemu_loadvm_state_main(QEMUFile *f, MigrationIncomingState *mis,
76 Error **errp);
77 int qemu_load_device_state(QEMUFile *f, Error **errp);
78 int qemu_loadvm_approve_switchover(const char *approver);
79 bool qemu_savevm_state_non_iterable(QEMUFile *f, Error **errp);
80 int qemu_savevm_state_non_iterable_early(QEMUFile *f,
81 JSONWriter *vmdesc,
82 Error **errp);
83 bool qemu_loadvm_load_state_buffer(const char *idstr, uint32_t instance_id,
84 char *buf, size_t len, Error **errp);
85
86 #endif