root / migration.h @ 45724d6d
History | View | Annotate | Download (3.2 kB)
1 | 5bb7910a | aliguori | /*
|
---|---|---|---|
2 | 5bb7910a | aliguori | * QEMU live migration
|
3 | 5bb7910a | aliguori | *
|
4 | 5bb7910a | aliguori | * Copyright IBM, Corp. 2008
|
5 | 5bb7910a | aliguori | *
|
6 | 5bb7910a | aliguori | * Authors:
|
7 | 5bb7910a | aliguori | * Anthony Liguori <aliguori@us.ibm.com>
|
8 | 5bb7910a | aliguori | *
|
9 | 5bb7910a | aliguori | * This work is licensed under the terms of the GNU GPL, version 2. See
|
10 | 5bb7910a | aliguori | * the COPYING file in the top-level directory.
|
11 | 5bb7910a | aliguori | *
|
12 | 5bb7910a | aliguori | */
|
13 | 5bb7910a | aliguori | |
14 | 5bb7910a | aliguori | #ifndef QEMU_MIGRATION_H
|
15 | 5bb7910a | aliguori | #define QEMU_MIGRATION_H
|
16 | 5bb7910a | aliguori | |
17 | f96fc8a0 | Luiz Capitulino | #include "qdict.h" |
18 | 376253ec | aliguori | #include "qemu-common.h" |
19 | 99a0db9b | Gerd Hoffmann | #include "notify.h" |
20 | fa2756b7 | Anthony Liguori | #include "error.h" |
21 | 7908c78d | Juan Quintela | #include "vmstate.h" |
22 | bbf6da32 | Orit Wasserman | #include "qapi-types.h" |
23 | 376253ec | aliguori | |
24 | 6607ae23 | Isaku Yamahata | struct MigrationParams {
|
25 | 6607ae23 | Isaku Yamahata | bool blk;
|
26 | 6607ae23 | Isaku Yamahata | bool shared;
|
27 | 6607ae23 | Isaku Yamahata | }; |
28 | 6607ae23 | Isaku Yamahata | |
29 | 22f00a44 | Juan Quintela | typedef struct MigrationState MigrationState; |
30 | dc7acc61 | Juan Quintela | |
31 | 22f00a44 | Juan Quintela | struct MigrationState
|
32 | 065e2813 | aliguori | { |
33 | 065e2813 | aliguori | int64_t bandwidth_limit; |
34 | 065e2813 | aliguori | QEMUFile *file; |
35 | 065e2813 | aliguori | int fd;
|
36 | 065e2813 | aliguori | int state;
|
37 | 22f00a44 | Juan Quintela | int (*get_error)(MigrationState *s);
|
38 | 22f00a44 | Juan Quintela | int (*close)(MigrationState *s);
|
39 | 22f00a44 | Juan Quintela | int (*write)(MigrationState *s, const void *buff, size_t size); |
40 | 065e2813 | aliguori | void *opaque;
|
41 | 6607ae23 | Isaku Yamahata | MigrationParams params; |
42 | d5f8a570 | Juan Quintela | int64_t total_time; |
43 | bbf6da32 | Orit Wasserman | bool enabled_capabilities[MIGRATION_CAPABILITY_MAX];
|
44 | 17ad9b35 | Orit Wasserman | int64_t xbzrle_cache_size; |
45 | 065e2813 | aliguori | }; |
46 | 065e2813 | aliguori | |
47 | 511c0231 | Juan Quintela | void process_incoming_migration(QEMUFile *f);
|
48 | 511c0231 | Juan Quintela | |
49 | d5c5dacc | Amos Kong | int qemu_start_incoming_migration(const char *uri, Error **errp); |
50 | 5bb7910a | aliguori | |
51 | a0a3fd60 | Glauber Costa | uint64_t migrate_max_downtime(void);
|
52 | a0a3fd60 | Glauber Costa | |
53 | c86a6683 | Luiz Capitulino | void do_info_migrate_print(Monitor *mon, const QObject *data); |
54 | c86a6683 | Luiz Capitulino | |
55 | c86a6683 | Luiz Capitulino | void do_info_migrate(Monitor *mon, QObject **ret_data);
|
56 | 5bb7910a | aliguori | |
57 | 065e2813 | aliguori | int exec_start_incoming_migration(const char *host_port); |
58 | 065e2813 | aliguori | |
59 | 07af4452 | Juan Quintela | int exec_start_outgoing_migration(MigrationState *s, const char *host_port); |
60 | 065e2813 | aliguori | |
61 | d5c5dacc | Amos Kong | int tcp_start_incoming_migration(const char *host_port, Error **errp); |
62 | 34c9dd8e | aliguori | |
63 | d5c5dacc | Amos Kong | int tcp_start_outgoing_migration(MigrationState *s, const char *host_port, |
64 | d5c5dacc | Amos Kong | Error **errp); |
65 | 34c9dd8e | aliguori | |
66 | 4951f65b | Chris Lalancette | int unix_start_incoming_migration(const char *path); |
67 | 4951f65b | Chris Lalancette | |
68 | 07af4452 | Juan Quintela | int unix_start_outgoing_migration(MigrationState *s, const char *path); |
69 | 4951f65b | Chris Lalancette | |
70 | 5ac1fad3 | Paolo Bonzini | int fd_start_incoming_migration(const char *path); |
71 | 5ac1fad3 | Paolo Bonzini | |
72 | 07af4452 | Juan Quintela | int fd_start_outgoing_migration(MigrationState *s, const char *fdname); |
73 | 5ac1fad3 | Paolo Bonzini | |
74 | 22f00a44 | Juan Quintela | void migrate_fd_error(MigrationState *s);
|
75 | 065e2813 | aliguori | |
76 | 22f00a44 | Juan Quintela | void migrate_fd_connect(MigrationState *s);
|
77 | 065e2813 | aliguori | |
78 | 99a0db9b | Gerd Hoffmann | void add_migration_state_change_notifier(Notifier *notify);
|
79 | 99a0db9b | Gerd Hoffmann | void remove_migration_state_change_notifier(Notifier *notify);
|
80 | afe2df69 | Gerd Hoffmann | bool migration_is_active(MigrationState *);
|
81 | 7073693b | Juan Quintela | bool migration_has_finished(MigrationState *);
|
82 | afe2df69 | Gerd Hoffmann | bool migration_has_failed(MigrationState *);
|
83 | 99a0db9b | Gerd Hoffmann | |
84 | adc56dda | Blue Swirl | uint64_t ram_bytes_remaining(void);
|
85 | adc56dda | Blue Swirl | uint64_t ram_bytes_transferred(void);
|
86 | adc56dda | Blue Swirl | uint64_t ram_bytes_total(void);
|
87 | adc56dda | Blue Swirl | |
88 | 7908c78d | Juan Quintela | extern SaveVMHandlers savevm_ram_handlers;
|
89 | adc56dda | Blue Swirl | |
90 | 004d4c10 | Orit Wasserman | uint64_t dup_mig_bytes_transferred(void);
|
91 | 004d4c10 | Orit Wasserman | uint64_t dup_mig_pages_transferred(void);
|
92 | 004d4c10 | Orit Wasserman | uint64_t norm_mig_bytes_transferred(void);
|
93 | 004d4c10 | Orit Wasserman | uint64_t norm_mig_pages_transferred(void);
|
94 | f36d55af | Orit Wasserman | uint64_t xbzrle_mig_bytes_transferred(void);
|
95 | f36d55af | Orit Wasserman | uint64_t xbzrle_mig_pages_transferred(void);
|
96 | f36d55af | Orit Wasserman | uint64_t xbzrle_mig_pages_overflow(void);
|
97 | f36d55af | Orit Wasserman | uint64_t xbzrle_mig_pages_cache_miss(void);
|
98 | 004d4c10 | Orit Wasserman | |
99 | fa2756b7 | Anthony Liguori | /**
|
100 | fa2756b7 | Anthony Liguori | * @migrate_add_blocker - prevent migration from proceeding
|
101 | fa2756b7 | Anthony Liguori | *
|
102 | fa2756b7 | Anthony Liguori | * @reason - an error to be returned whenever migration is attempted
|
103 | fa2756b7 | Anthony Liguori | */
|
104 | fa2756b7 | Anthony Liguori | void migrate_add_blocker(Error *reason);
|
105 | fa2756b7 | Anthony Liguori | |
106 | fa2756b7 | Anthony Liguori | /**
|
107 | fa2756b7 | Anthony Liguori | * @migrate_del_blocker - remove a blocking error from migration
|
108 | fa2756b7 | Anthony Liguori | *
|
109 | fa2756b7 | Anthony Liguori | * @reason - the error blocking migration
|
110 | fa2756b7 | Anthony Liguori | */
|
111 | fa2756b7 | Anthony Liguori | void migrate_del_blocker(Error *reason);
|
112 | fa2756b7 | Anthony Liguori | |
113 | 302dfbeb | Orit Wasserman | int xbzrle_encode_buffer(uint8_t *old_buf, uint8_t *new_buf, int slen, |
114 | 302dfbeb | Orit Wasserman | uint8_t *dst, int dlen);
|
115 | 302dfbeb | Orit Wasserman | int xbzrle_decode_buffer(uint8_t *src, int slen, uint8_t *dst, int dlen); |
116 | 302dfbeb | Orit Wasserman | |
117 | 17ad9b35 | Orit Wasserman | int migrate_use_xbzrle(void); |
118 | 17ad9b35 | Orit Wasserman | int64_t migrate_xbzrle_cache_size(void);
|
119 | 17ad9b35 | Orit Wasserman | |
120 | 9e1ba4cc | Orit Wasserman | int64_t xbzrle_cache_resize(int64_t new_size); |
121 | 9e1ba4cc | Orit Wasserman | |
122 | 5bb7910a | aliguori | #endif |