root / migration.h @ 1435ddb8
History | View | Annotate | Download (2.5 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 | 376253ec | aliguori | |
22 | 6607ae23 | Isaku Yamahata | struct MigrationParams {
|
23 | 6607ae23 | Isaku Yamahata | bool blk;
|
24 | 6607ae23 | Isaku Yamahata | bool shared;
|
25 | 6607ae23 | Isaku Yamahata | }; |
26 | 6607ae23 | Isaku Yamahata | |
27 | 22f00a44 | Juan Quintela | typedef struct MigrationState MigrationState; |
28 | dc7acc61 | Juan Quintela | |
29 | 22f00a44 | Juan Quintela | struct MigrationState
|
30 | 065e2813 | aliguori | { |
31 | 065e2813 | aliguori | int64_t bandwidth_limit; |
32 | 065e2813 | aliguori | QEMUFile *file; |
33 | 065e2813 | aliguori | int fd;
|
34 | 065e2813 | aliguori | int state;
|
35 | 22f00a44 | Juan Quintela | int (*get_error)(MigrationState *s);
|
36 | 22f00a44 | Juan Quintela | int (*close)(MigrationState *s);
|
37 | 22f00a44 | Juan Quintela | int (*write)(MigrationState *s, const void *buff, size_t size); |
38 | 065e2813 | aliguori | void *opaque;
|
39 | 6607ae23 | Isaku Yamahata | MigrationParams params; |
40 | d5f8a570 | Juan Quintela | int64_t total_time; |
41 | 065e2813 | aliguori | }; |
42 | 065e2813 | aliguori | |
43 | 511c0231 | Juan Quintela | void process_incoming_migration(QEMUFile *f);
|
44 | 511c0231 | Juan Quintela | |
45 | d5c5dacc | Amos Kong | int qemu_start_incoming_migration(const char *uri, Error **errp); |
46 | 5bb7910a | aliguori | |
47 | a0a3fd60 | Glauber Costa | uint64_t migrate_max_downtime(void);
|
48 | a0a3fd60 | Glauber Costa | |
49 | c86a6683 | Luiz Capitulino | void do_info_migrate_print(Monitor *mon, const QObject *data); |
50 | c86a6683 | Luiz Capitulino | |
51 | c86a6683 | Luiz Capitulino | void do_info_migrate(Monitor *mon, QObject **ret_data);
|
52 | 5bb7910a | aliguori | |
53 | 065e2813 | aliguori | int exec_start_incoming_migration(const char *host_port); |
54 | 065e2813 | aliguori | |
55 | 07af4452 | Juan Quintela | int exec_start_outgoing_migration(MigrationState *s, const char *host_port); |
56 | 065e2813 | aliguori | |
57 | d5c5dacc | Amos Kong | int tcp_start_incoming_migration(const char *host_port, Error **errp); |
58 | 34c9dd8e | aliguori | |
59 | d5c5dacc | Amos Kong | int tcp_start_outgoing_migration(MigrationState *s, const char *host_port, |
60 | d5c5dacc | Amos Kong | Error **errp); |
61 | 34c9dd8e | aliguori | |
62 | 4951f65b | Chris Lalancette | int unix_start_incoming_migration(const char *path); |
63 | 4951f65b | Chris Lalancette | |
64 | 07af4452 | Juan Quintela | int unix_start_outgoing_migration(MigrationState *s, const char *path); |
65 | 4951f65b | Chris Lalancette | |
66 | 5ac1fad3 | Paolo Bonzini | int fd_start_incoming_migration(const char *path); |
67 | 5ac1fad3 | Paolo Bonzini | |
68 | 07af4452 | Juan Quintela | int fd_start_outgoing_migration(MigrationState *s, const char *fdname); |
69 | 5ac1fad3 | Paolo Bonzini | |
70 | 22f00a44 | Juan Quintela | void migrate_fd_error(MigrationState *s);
|
71 | 065e2813 | aliguori | |
72 | 22f00a44 | Juan Quintela | void migrate_fd_connect(MigrationState *s);
|
73 | 065e2813 | aliguori | |
74 | 99a0db9b | Gerd Hoffmann | void add_migration_state_change_notifier(Notifier *notify);
|
75 | 99a0db9b | Gerd Hoffmann | void remove_migration_state_change_notifier(Notifier *notify);
|
76 | afe2df69 | Gerd Hoffmann | bool migration_is_active(MigrationState *);
|
77 | 7073693b | Juan Quintela | bool migration_has_finished(MigrationState *);
|
78 | afe2df69 | Gerd Hoffmann | bool migration_has_failed(MigrationState *);
|
79 | 99a0db9b | Gerd Hoffmann | |
80 | adc56dda | Blue Swirl | uint64_t ram_bytes_remaining(void);
|
81 | adc56dda | Blue Swirl | uint64_t ram_bytes_transferred(void);
|
82 | adc56dda | Blue Swirl | uint64_t ram_bytes_total(void);
|
83 | adc56dda | Blue Swirl | |
84 | 539de124 | Luiz Capitulino | int ram_save_live(QEMUFile *f, int stage, void *opaque); |
85 | adc56dda | Blue Swirl | int ram_load(QEMUFile *f, void *opaque, int version_id); |
86 | adc56dda | Blue Swirl | |
87 | fa2756b7 | Anthony Liguori | /**
|
88 | fa2756b7 | Anthony Liguori | * @migrate_add_blocker - prevent migration from proceeding
|
89 | fa2756b7 | Anthony Liguori | *
|
90 | fa2756b7 | Anthony Liguori | * @reason - an error to be returned whenever migration is attempted
|
91 | fa2756b7 | Anthony Liguori | */
|
92 | fa2756b7 | Anthony Liguori | void migrate_add_blocker(Error *reason);
|
93 | fa2756b7 | Anthony Liguori | |
94 | fa2756b7 | Anthony Liguori | /**
|
95 | fa2756b7 | Anthony Liguori | * @migrate_del_blocker - remove a blocking error from migration
|
96 | fa2756b7 | Anthony Liguori | *
|
97 | fa2756b7 | Anthony Liguori | * @reason - the error blocking migration
|
98 | fa2756b7 | Anthony Liguori | */
|
99 | fa2756b7 | Anthony Liguori | void migrate_del_blocker(Error *reason);
|
100 | fa2756b7 | Anthony Liguori | |
101 | 5bb7910a | aliguori | #endif |