15e22479aSJuan Quintela /* 25e22479aSJuan Quintela * QEMU snapshots 35e22479aSJuan Quintela * 45e22479aSJuan Quintela * Copyright (c) 2004-2008 Fabrice Bellard 55e22479aSJuan Quintela * Copyright (c) 2009-2015 Red Hat Inc 65e22479aSJuan Quintela * 75e22479aSJuan Quintela * Authors: 85e22479aSJuan Quintela * Juan Quintela <quintela@redhat.com> 95e22479aSJuan Quintela * 105e22479aSJuan Quintela * 115e22479aSJuan Quintela * This work is licensed under the terms of the GNU GPL, version 2 or later. 125e22479aSJuan Quintela * See the COPYING file in the top-level directory. 135e22479aSJuan Quintela */ 145e22479aSJuan Quintela 155e22479aSJuan Quintela #ifndef QEMU_MIGRATION_SNAPSHOT_H 165e22479aSJuan Quintela #define QEMU_MIGRATION_SNAPSHOT_H 175e22479aSJuan Quintela 18f1a9fcddSDaniel P. Berrangé #include "qapi/qapi-builtin-types.h" 19*58b10570SSteve Sistare #include "qapi/qapi-types-run-state.h" 20f1a9fcddSDaniel P. Berrangé 217ea14df2SPhilippe Mathieu-Daudé /** 227ea14df2SPhilippe Mathieu-Daudé * save_snapshot: Save an internal snapshot. 237ea14df2SPhilippe Mathieu-Daudé * @name: name of internal snapshot 24f781f841SDaniel P. Berrangé * @overwrite: replace existing snapshot with @name 25f1a9fcddSDaniel P. Berrangé * @vmstate: blockdev node name to store VM state in 26f1a9fcddSDaniel P. Berrangé * @has_devices: whether to use explicit device list 27f1a9fcddSDaniel P. Berrangé * @devices: explicit device list to snapshot 287ea14df2SPhilippe Mathieu-Daudé * @errp: pointer to error object 297ea14df2SPhilippe Mathieu-Daudé * On success, return %true. 307ea14df2SPhilippe Mathieu-Daudé * On failure, store an error through @errp and return %false. 317ea14df2SPhilippe Mathieu-Daudé */ 32f1a9fcddSDaniel P. Berrangé bool save_snapshot(const char *name, bool overwrite, 33f1a9fcddSDaniel P. Berrangé const char *vmstate, 34f1a9fcddSDaniel P. Berrangé bool has_devices, strList *devices, 35f1a9fcddSDaniel P. Berrangé Error **errp); 36f61fe11aSDaniel P. Berrangé 37f61fe11aSDaniel P. Berrangé /** 38f61fe11aSDaniel P. Berrangé * load_snapshot: Load an internal snapshot. 39f61fe11aSDaniel P. Berrangé * @name: name of internal snapshot 40f1a9fcddSDaniel P. Berrangé * @vmstate: blockdev node name to load VM state from 41f1a9fcddSDaniel P. Berrangé * @has_devices: whether to use explicit device list 42f1a9fcddSDaniel P. Berrangé * @devices: explicit device list to snapshot 43f61fe11aSDaniel P. Berrangé * @errp: pointer to error object 44f61fe11aSDaniel P. Berrangé * On success, return %true. 45f61fe11aSDaniel P. Berrangé * On failure, store an error through @errp and return %false. 46f61fe11aSDaniel P. Berrangé */ 47f1a9fcddSDaniel P. Berrangé bool load_snapshot(const char *name, 48f1a9fcddSDaniel P. Berrangé const char *vmstate, 49f1a9fcddSDaniel P. Berrangé bool has_devices, strList *devices, 50f1a9fcddSDaniel P. Berrangé Error **errp); 515e22479aSJuan Quintela 52bef7e9e2SDaniel P. Berrangé /** 53bef7e9e2SDaniel P. Berrangé * delete_snapshot: Delete a snapshot. 54bef7e9e2SDaniel P. Berrangé * @name: path to snapshot 55bef7e9e2SDaniel P. Berrangé * @has_devices: whether to use explicit device list 56bef7e9e2SDaniel P. Berrangé * @devices: explicit device list to snapshot 57bef7e9e2SDaniel P. Berrangé * @errp: pointer to error object 58bef7e9e2SDaniel P. Berrangé * On success, return %true. 59bef7e9e2SDaniel P. Berrangé * On failure, store an error through @errp and return %false. 60bef7e9e2SDaniel P. Berrangé */ 61bef7e9e2SDaniel P. Berrangé bool delete_snapshot(const char *name, 62bef7e9e2SDaniel P. Berrangé bool has_devices, strList *devices, 63bef7e9e2SDaniel P. Berrangé Error **errp); 64bef7e9e2SDaniel P. Berrangé 65*58b10570SSteve Sistare /** 66*58b10570SSteve Sistare * load_snapshot_resume: Restore runstate after loading snapshot. 67*58b10570SSteve Sistare * @state: state to restore 68*58b10570SSteve Sistare */ 69*58b10570SSteve Sistare void load_snapshot_resume(RunState state); 70*58b10570SSteve Sistare 715e22479aSJuan Quintela #endif 72