From: Junyan He <junyan...@intel.com> We need to know the snapshot saving information when we do dependent snapshot saving, e.g the name of previous snapshot. Add this global function to query the snapshot status is usable.
Signed-off-by: Junyan He <junyan...@intel.com> --- include/migration/snapshot.h | 3 +++ migration/savevm.c | 27 +++++++++++++++++++++++++++ 2 files changed, 30 insertions(+) diff --git a/include/migration/snapshot.h b/include/migration/snapshot.h index c85b6ec..0b950ce 100644 --- a/include/migration/snapshot.h +++ b/include/migration/snapshot.h @@ -15,7 +15,10 @@ #ifndef QEMU_MIGRATION_SNAPSHOT_H #define QEMU_MIGRATION_SNAPSHOT_H +#include "block/snapshot.h" + int save_snapshot(const char *name, Error **errp); int load_snapshot(const char *name, Error **errp); +int get_current_snapshot_info(QEMUSnapshotInfo *sn); #endif diff --git a/migration/savevm.c b/migration/savevm.c index 1bbd6aa..3a9b904 100644 --- a/migration/savevm.c +++ b/migration/savevm.c @@ -2212,6 +2212,29 @@ int qemu_loadvm_state(QEMUFile *f) return ret; } +static int in_snap_saving; +static QEMUSnapshotInfo in_snap_saving_sn; + +int get_current_snapshot_info(QEMUSnapshotInfo *sn) +{ + if (in_snap_saving && sn) { + memcpy(sn, &in_snap_saving_sn, sizeof(QEMUSnapshotInfo)); + } + + return in_snap_saving; +} + +static void set_current_snapshot_info(QEMUSnapshotInfo *sn) +{ + if (sn) { + memcpy(&in_snap_saving_sn, sn, sizeof(QEMUSnapshotInfo)); + in_snap_saving = 1; + } else { + memset(&in_snap_saving_sn, 0, sizeof(QEMUSnapshotInfo)); + in_snap_saving = 0; + } +} + int save_snapshot(const char *name, Error **errp) { BlockDriverState *bs, *bs1; @@ -2282,6 +2305,8 @@ int save_snapshot(const char *name, Error **errp) strftime(sn->name, sizeof(sn->name), "vm-%Y%m%d%H%M%S", &tm); } + set_current_snapshot_info(sn); + /* save the VM state */ f = qemu_fopen_bdrv(bs, 1); if (!f) { @@ -2313,6 +2338,8 @@ int save_snapshot(const char *name, Error **errp) ret = 0; the_end: + set_current_snapshot_info(NULL); + if (aio_context) { aio_context_release(aio_context); } -- 2.7.4