root / migration.h @ 06aac7bd
History | View | Annotate | Download (3.7 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 | 9c5a9fcf | Juan Quintela | int64_t downtime; |
44 | 2c52ddf1 | Juan Quintela | int64_t expected_downtime; |
45 | 8d017193 | Juan Quintela | int64_t dirty_pages_rate; |
46 | bbf6da32 | Orit Wasserman | bool enabled_capabilities[MIGRATION_CAPABILITY_MAX];
|
47 | 17ad9b35 | Orit Wasserman | int64_t xbzrle_cache_size; |
48 | 065e2813 | aliguori | }; |
49 | 065e2813 | aliguori | |
50 | 511c0231 | Juan Quintela | void process_incoming_migration(QEMUFile *f);
|
51 | 511c0231 | Juan Quintela | |
52 | 43eaae28 | Paolo Bonzini | void qemu_start_incoming_migration(const char *uri, Error **errp); |
53 | 5bb7910a | aliguori | |
54 | a0a3fd60 | Glauber Costa | uint64_t migrate_max_downtime(void);
|
55 | a0a3fd60 | Glauber Costa | |
56 | c86a6683 | Luiz Capitulino | void do_info_migrate_print(Monitor *mon, const QObject *data); |
57 | c86a6683 | Luiz Capitulino | |
58 | c86a6683 | Luiz Capitulino | void do_info_migrate(Monitor *mon, QObject **ret_data);
|
59 | 5bb7910a | aliguori | |
60 | 43eaae28 | Paolo Bonzini | void exec_start_incoming_migration(const char *host_port, Error **errp); |
61 | 065e2813 | aliguori | |
62 | f37afb5a | Paolo Bonzini | void exec_start_outgoing_migration(MigrationState *s, const char *host_port, Error **errp); |
63 | 065e2813 | aliguori | |
64 | 43eaae28 | Paolo Bonzini | void tcp_start_incoming_migration(const char *host_port, Error **errp); |
65 | 34c9dd8e | aliguori | |
66 | f37afb5a | Paolo Bonzini | void tcp_start_outgoing_migration(MigrationState *s, const char *host_port, Error **errp); |
67 | 34c9dd8e | aliguori | |
68 | 43eaae28 | Paolo Bonzini | void unix_start_incoming_migration(const char *path, Error **errp); |
69 | 4951f65b | Chris Lalancette | |
70 | f37afb5a | Paolo Bonzini | void unix_start_outgoing_migration(MigrationState *s, const char *path, Error **errp); |
71 | 4951f65b | Chris Lalancette | |
72 | 43eaae28 | Paolo Bonzini | void fd_start_incoming_migration(const char *path, Error **errp); |
73 | 5ac1fad3 | Paolo Bonzini | |
74 | f37afb5a | Paolo Bonzini | void fd_start_outgoing_migration(MigrationState *s, const char *fdname, Error **errp); |
75 | 5ac1fad3 | Paolo Bonzini | |
76 | 22f00a44 | Juan Quintela | void migrate_fd_error(MigrationState *s);
|
77 | 065e2813 | aliguori | |
78 | 22f00a44 | Juan Quintela | void migrate_fd_connect(MigrationState *s);
|
79 | 065e2813 | aliguori | |
80 | c87b015b | Juan Quintela | ssize_t migrate_fd_put_buffer(MigrationState *s, const void *data, |
81 | c87b015b | Juan Quintela | size_t size); |
82 | 2c9adcb8 | Juan Quintela | void migrate_fd_put_ready(MigrationState *s);
|
83 | 9499743f | Juan Quintela | int migrate_fd_wait_for_unfreeze(MigrationState *s);
|
84 | 11c76741 | Juan Quintela | int migrate_fd_close(MigrationState *s);
|
85 | c87b015b | Juan Quintela | |
86 | 99a0db9b | Gerd Hoffmann | void add_migration_state_change_notifier(Notifier *notify);
|
87 | 99a0db9b | Gerd Hoffmann | void remove_migration_state_change_notifier(Notifier *notify);
|
88 | afe2df69 | Gerd Hoffmann | bool migration_is_active(MigrationState *);
|
89 | 7073693b | Juan Quintela | bool migration_has_finished(MigrationState *);
|
90 | afe2df69 | Gerd Hoffmann | bool migration_has_failed(MigrationState *);
|
91 | 859bc756 | Juan Quintela | MigrationState *migrate_get_current(void);
|
92 | 99a0db9b | Gerd Hoffmann | |
93 | adc56dda | Blue Swirl | uint64_t ram_bytes_remaining(void);
|
94 | adc56dda | Blue Swirl | uint64_t ram_bytes_transferred(void);
|
95 | adc56dda | Blue Swirl | uint64_t ram_bytes_total(void);
|
96 | adc56dda | Blue Swirl | |
97 | 7908c78d | Juan Quintela | extern SaveVMHandlers savevm_ram_handlers;
|
98 | adc56dda | Blue Swirl | |
99 | 004d4c10 | Orit Wasserman | uint64_t dup_mig_bytes_transferred(void);
|
100 | 004d4c10 | Orit Wasserman | uint64_t dup_mig_pages_transferred(void);
|
101 | 004d4c10 | Orit Wasserman | uint64_t norm_mig_bytes_transferred(void);
|
102 | 004d4c10 | Orit Wasserman | uint64_t norm_mig_pages_transferred(void);
|
103 | f36d55af | Orit Wasserman | uint64_t xbzrle_mig_bytes_transferred(void);
|
104 | f36d55af | Orit Wasserman | uint64_t xbzrle_mig_pages_transferred(void);
|
105 | f36d55af | Orit Wasserman | uint64_t xbzrle_mig_pages_overflow(void);
|
106 | f36d55af | Orit Wasserman | uint64_t xbzrle_mig_pages_cache_miss(void);
|
107 | 004d4c10 | Orit Wasserman | |
108 | fa2756b7 | Anthony Liguori | /**
|
109 | fa2756b7 | Anthony Liguori | * @migrate_add_blocker - prevent migration from proceeding
|
110 | fa2756b7 | Anthony Liguori | *
|
111 | fa2756b7 | Anthony Liguori | * @reason - an error to be returned whenever migration is attempted
|
112 | fa2756b7 | Anthony Liguori | */
|
113 | fa2756b7 | Anthony Liguori | void migrate_add_blocker(Error *reason);
|
114 | fa2756b7 | Anthony Liguori | |
115 | fa2756b7 | Anthony Liguori | /**
|
116 | fa2756b7 | Anthony Liguori | * @migrate_del_blocker - remove a blocking error from migration
|
117 | fa2756b7 | Anthony Liguori | *
|
118 | fa2756b7 | Anthony Liguori | * @reason - the error blocking migration
|
119 | fa2756b7 | Anthony Liguori | */
|
120 | fa2756b7 | Anthony Liguori | void migrate_del_blocker(Error *reason);
|
121 | fa2756b7 | Anthony Liguori | |
122 | 302dfbeb | Orit Wasserman | int xbzrle_encode_buffer(uint8_t *old_buf, uint8_t *new_buf, int slen, |
123 | 302dfbeb | Orit Wasserman | uint8_t *dst, int dlen);
|
124 | 302dfbeb | Orit Wasserman | int xbzrle_decode_buffer(uint8_t *src, int slen, uint8_t *dst, int dlen); |
125 | 302dfbeb | Orit Wasserman | |
126 | 17ad9b35 | Orit Wasserman | int migrate_use_xbzrle(void); |
127 | 17ad9b35 | Orit Wasserman | int64_t migrate_xbzrle_cache_size(void);
|
128 | 17ad9b35 | Orit Wasserman | |
129 | 9e1ba4cc | Orit Wasserman | int64_t xbzrle_cache_resize(int64_t new_size); |
130 | 9e1ba4cc | Orit Wasserman | |
131 | 5bb7910a | aliguori | #endif |