root / migration.h @ eabba580
History | View | Annotate | Download (3.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 | 376253ec | aliguori | |
20 | 5bb7910a | aliguori | #define MIG_STATE_ERROR -1 |
21 | 5bb7910a | aliguori | #define MIG_STATE_COMPLETED 0 |
22 | 5bb7910a | aliguori | #define MIG_STATE_CANCELLED 1 |
23 | 5bb7910a | aliguori | #define MIG_STATE_ACTIVE 2 |
24 | 5bb7910a | aliguori | |
25 | 5bb7910a | aliguori | typedef struct MigrationState MigrationState; |
26 | 5bb7910a | aliguori | |
27 | 5bb7910a | aliguori | struct MigrationState
|
28 | 5bb7910a | aliguori | { |
29 | 5bb7910a | aliguori | /* FIXME: add more accessors to print migration info */
|
30 | 5bb7910a | aliguori | void (*cancel)(MigrationState *s);
|
31 | 5bb7910a | aliguori | int (*get_status)(MigrationState *s);
|
32 | 5bb7910a | aliguori | void (*release)(MigrationState *s);
|
33 | c163b5ca | lirans@il.ibm.com | int blk;
|
34 | c163b5ca | lirans@il.ibm.com | int shared;
|
35 | 5bb7910a | aliguori | }; |
36 | 5bb7910a | aliguori | |
37 | 065e2813 | aliguori | typedef struct FdMigrationState FdMigrationState; |
38 | 065e2813 | aliguori | |
39 | 065e2813 | aliguori | struct FdMigrationState
|
40 | 065e2813 | aliguori | { |
41 | 065e2813 | aliguori | MigrationState mig_state; |
42 | 065e2813 | aliguori | int64_t bandwidth_limit; |
43 | 065e2813 | aliguori | QEMUFile *file; |
44 | 065e2813 | aliguori | int fd;
|
45 | f327aa0c | Jan Kiszka | Monitor *mon; |
46 | 065e2813 | aliguori | int state;
|
47 | 065e2813 | aliguori | int (*get_error)(struct FdMigrationState*); |
48 | 065e2813 | aliguori | int (*close)(struct FdMigrationState*); |
49 | 065e2813 | aliguori | int (*write)(struct FdMigrationState*, const void *, size_t); |
50 | 065e2813 | aliguori | void *opaque;
|
51 | 065e2813 | aliguori | }; |
52 | 065e2813 | aliguori | |
53 | 511c0231 | Juan Quintela | void process_incoming_migration(QEMUFile *f);
|
54 | 511c0231 | Juan Quintela | |
55 | 8ca5e801 | Juan Quintela | int qemu_start_incoming_migration(const char *uri); |
56 | 5bb7910a | aliguori | |
57 | b5d17adb | Luiz Capitulino | int do_migrate(Monitor *mon, const QDict *qdict, QObject **ret_data); |
58 | 5bb7910a | aliguori | |
59 | ef4b7eee | Luiz Capitulino | int do_migrate_cancel(Monitor *mon, const QDict *qdict, QObject **ret_data); |
60 | 5bb7910a | aliguori | |
61 | ef4b7eee | Luiz Capitulino | int do_migrate_set_speed(Monitor *mon, const QDict *qdict, QObject **ret_data); |
62 | 5bb7910a | aliguori | |
63 | a0a3fd60 | Glauber Costa | uint64_t migrate_max_downtime(void);
|
64 | a0a3fd60 | Glauber Costa | |
65 | ef4b7eee | Luiz Capitulino | int do_migrate_set_downtime(Monitor *mon, const QDict *qdict, |
66 | ef4b7eee | Luiz Capitulino | QObject **ret_data); |
67 | 2ea42952 | Glauber Costa | |
68 | c86a6683 | Luiz Capitulino | void do_info_migrate_print(Monitor *mon, const QObject *data); |
69 | c86a6683 | Luiz Capitulino | |
70 | c86a6683 | Luiz Capitulino | void do_info_migrate(Monitor *mon, QObject **ret_data);
|
71 | 5bb7910a | aliguori | |
72 | 065e2813 | aliguori | int exec_start_incoming_migration(const char *host_port); |
73 | 065e2813 | aliguori | |
74 | f327aa0c | Jan Kiszka | MigrationState *exec_start_outgoing_migration(Monitor *mon, |
75 | f327aa0c | Jan Kiszka | const char *host_port, |
76 | c163b5ca | lirans@il.ibm.com | int64_t bandwidth_limit, |
77 | c163b5ca | lirans@il.ibm.com | int detach,
|
78 | c163b5ca | lirans@il.ibm.com | int blk,
|
79 | c163b5ca | lirans@il.ibm.com | int inc);
|
80 | 065e2813 | aliguori | |
81 | 34c9dd8e | aliguori | int tcp_start_incoming_migration(const char *host_port); |
82 | 34c9dd8e | aliguori | |
83 | f327aa0c | Jan Kiszka | MigrationState *tcp_start_outgoing_migration(Monitor *mon, |
84 | f327aa0c | Jan Kiszka | const char *host_port, |
85 | 34c9dd8e | aliguori | int64_t bandwidth_limit, |
86 | c163b5ca | lirans@il.ibm.com | int detach,
|
87 | c163b5ca | lirans@il.ibm.com | int blk,
|
88 | c163b5ca | lirans@il.ibm.com | int inc);
|
89 | 34c9dd8e | aliguori | |
90 | 4951f65b | Chris Lalancette | int unix_start_incoming_migration(const char *path); |
91 | 4951f65b | Chris Lalancette | |
92 | f327aa0c | Jan Kiszka | MigrationState *unix_start_outgoing_migration(Monitor *mon, |
93 | f327aa0c | Jan Kiszka | const char *path, |
94 | 4951f65b | Chris Lalancette | int64_t bandwidth_limit, |
95 | c163b5ca | lirans@il.ibm.com | int detach,
|
96 | c163b5ca | lirans@il.ibm.com | int blk,
|
97 | c163b5ca | lirans@il.ibm.com | int inc);
|
98 | 4951f65b | Chris Lalancette | |
99 | 5ac1fad3 | Paolo Bonzini | int fd_start_incoming_migration(const char *path); |
100 | 5ac1fad3 | Paolo Bonzini | |
101 | 5ac1fad3 | Paolo Bonzini | MigrationState *fd_start_outgoing_migration(Monitor *mon, |
102 | 5ac1fad3 | Paolo Bonzini | const char *fdname, |
103 | 5ac1fad3 | Paolo Bonzini | int64_t bandwidth_limit, |
104 | c163b5ca | lirans@il.ibm.com | int detach,
|
105 | c163b5ca | lirans@il.ibm.com | int blk,
|
106 | c163b5ca | lirans@il.ibm.com | int inc);
|
107 | 5ac1fad3 | Paolo Bonzini | |
108 | f327aa0c | Jan Kiszka | void migrate_fd_monitor_suspend(FdMigrationState *s, Monitor *mon);
|
109 | 731b0364 | aliguori | |
110 | 065e2813 | aliguori | void migrate_fd_error(FdMigrationState *s);
|
111 | 065e2813 | aliguori | |
112 | 41ef56e6 | Anthony Liguori | int migrate_fd_cleanup(FdMigrationState *s);
|
113 | 065e2813 | aliguori | |
114 | 065e2813 | aliguori | void migrate_fd_put_notify(void *opaque); |
115 | 065e2813 | aliguori | |
116 | 065e2813 | aliguori | ssize_t migrate_fd_put_buffer(void *opaque, const void *data, size_t size); |
117 | 065e2813 | aliguori | |
118 | 065e2813 | aliguori | void migrate_fd_connect(FdMigrationState *s);
|
119 | 065e2813 | aliguori | |
120 | 065e2813 | aliguori | void migrate_fd_put_ready(void *opaque); |
121 | 065e2813 | aliguori | |
122 | 065e2813 | aliguori | int migrate_fd_get_status(MigrationState *mig_state);
|
123 | 065e2813 | aliguori | |
124 | 065e2813 | aliguori | void migrate_fd_cancel(MigrationState *mig_state);
|
125 | 065e2813 | aliguori | |
126 | 065e2813 | aliguori | void migrate_fd_release(MigrationState *mig_state);
|
127 | 065e2813 | aliguori | |
128 | 065e2813 | aliguori | void migrate_fd_wait_for_unfreeze(void *opaque); |
129 | 065e2813 | aliguori | |
130 | 065e2813 | aliguori | int migrate_fd_close(void *opaque); |
131 | 065e2813 | aliguori | |
132 | 065e2813 | aliguori | static inline FdMigrationState *migrate_to_fms(MigrationState *mig_state) |
133 | 065e2813 | aliguori | { |
134 | 065e2813 | aliguori | return container_of(mig_state, FdMigrationState, mig_state);
|
135 | 065e2813 | aliguori | } |
136 | 065e2813 | aliguori | |
137 | 5bb7910a | aliguori | #endif |