File:  [Qemu by Fabrice Bellard] / qemu / migration.h
Revision 1.1.1.7 (vendor branch): download - view: text, annotated - select for diffs
Tue Apr 24 19:17:39 2018 UTC (3 years, 1 month ago) by root
Branches: qemu, MAIN
CVS tags: qemu1001, HEAD
qemu 1.0.1

    1: /*
    2:  * QEMU live migration
    3:  *
    4:  * Copyright IBM, Corp. 2008
    5:  *
    6:  * Authors:
    7:  *  Anthony Liguori   <aliguori@us.ibm.com>
    8:  *
    9:  * This work is licensed under the terms of the GNU GPL, version 2.  See
   10:  * the COPYING file in the top-level directory.
   11:  *
   12:  */
   13: 
   14: #ifndef QEMU_MIGRATION_H
   15: #define QEMU_MIGRATION_H
   16: 
   17: #include "qdict.h"
   18: #include "qemu-common.h"
   19: #include "notify.h"
   20: #include "error.h"
   21: 
   22: typedef struct MigrationState MigrationState;
   23: 
   24: struct MigrationState
   25: {
   26:     int64_t bandwidth_limit;
   27:     QEMUFile *file;
   28:     int fd;
   29:     Monitor *mon;
   30:     int state;
   31:     int (*get_error)(MigrationState *s);
   32:     int (*close)(MigrationState *s);
   33:     int (*write)(MigrationState *s, const void *buff, size_t size);
   34:     void *opaque;
   35:     int blk;
   36:     int shared;
   37: };
   38: 
   39: void process_incoming_migration(QEMUFile *f);
   40: 
   41: int qemu_start_incoming_migration(const char *uri);
   42: 
   43: int do_migrate(Monitor *mon, const QDict *qdict, QObject **ret_data);
   44: 
   45: int do_migrate_cancel(Monitor *mon, const QDict *qdict, QObject **ret_data);
   46: 
   47: int do_migrate_set_speed(Monitor *mon, const QDict *qdict, QObject **ret_data);
   48: 
   49: uint64_t migrate_max_downtime(void);
   50: 
   51: int do_migrate_set_downtime(Monitor *mon, const QDict *qdict,
   52:                             QObject **ret_data);
   53: 
   54: void do_info_migrate_print(Monitor *mon, const QObject *data);
   55: 
   56: void do_info_migrate(Monitor *mon, QObject **ret_data);
   57: 
   58: int exec_start_incoming_migration(const char *host_port);
   59: 
   60: int exec_start_outgoing_migration(MigrationState *s, const char *host_port);
   61: 
   62: int tcp_start_incoming_migration(const char *host_port);
   63: 
   64: int tcp_start_outgoing_migration(MigrationState *s, const char *host_port);
   65: 
   66: int unix_start_incoming_migration(const char *path);
   67: 
   68: int unix_start_outgoing_migration(MigrationState *s, const char *path);
   69: 
   70: int fd_start_incoming_migration(const char *path);
   71: 
   72: int fd_start_outgoing_migration(MigrationState *s, const char *fdname);
   73: 
   74: void migrate_fd_error(MigrationState *s);
   75: 
   76: void migrate_fd_connect(MigrationState *s);
   77: 
   78: void add_migration_state_change_notifier(Notifier *notify);
   79: void remove_migration_state_change_notifier(Notifier *notify);
   80: bool migration_is_active(MigrationState *);
   81: bool migration_has_finished(MigrationState *);
   82: bool migration_has_failed(MigrationState *);
   83: 
   84: uint64_t ram_bytes_remaining(void);
   85: uint64_t ram_bytes_transferred(void);
   86: uint64_t ram_bytes_total(void);
   87: 
   88: int ram_save_live(Monitor *mon, QEMUFile *f, int stage, void *opaque);
   89: int ram_load(QEMUFile *f, void *opaque, int version_id);
   90: 
   91: extern int incoming_expected;
   92: 
   93: /**
   94:  * @migrate_add_blocker - prevent migration from proceeding
   95:  *
   96:  * @reason - an error to be returned whenever migration is attempted
   97:  */
   98: void migrate_add_blocker(Error *reason);
   99: 
  100: /**
  101:  * @migrate_del_blocker - remove a blocking error from migration
  102:  *
  103:  * @reason - the error blocking migration
  104:  */
  105: void migrate_del_blocker(Error *reason);
  106: 
  107: #endif

unix.superglobalmegacorp.com