summaryrefslogtreecommitdiff
path: root/migration
diff options
context:
space:
mode:
authorDenis V. Lunev <den@openvz.org>2015-11-19 09:42:04 +0300
committerJuan Quintela <quintela@redhat.com>2015-11-19 11:50:00 +0100
commit4c1cdbaad07d067f3d156687d79014ab44387e2c (patch)
treef5eb7f5ba89b5f5b9c074ac5260f91c04fe09d12 /migration
parent9b00ea376d42e543feb12d7ce5435366d01aab1b (diff)
downloadqemu-4c1cdbaad07d067f3d156687d79014ab44387e2c.tar.gz
snapshot: create bdrv_all_goto_snapshot helper
to switch to snapshot on all loaded block drivers. The patch also ensures proper locking. Signed-off-by: Denis V. Lunev <den@openvz.org> Reviewed-by: Greg Kurz <gkurz@linux.vnet.ibm.com> Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com> Reviewed-by: Fam Zheng <famz@redhat.com> Reviewed-by: Juan Quintela <quintela@redhat.com> CC: Kevin Wolf <kwolf@redhat.com> Tested-by: Greg Kurz <gkurz@linux.vnet.ibm.com> Signed-off-by: Juan Quintela <quintela@redhat.com>
Diffstat (limited to 'migration')
-rw-r--r--migration/savevm.c15
1 files changed, 5 insertions, 10 deletions
diff --git a/migration/savevm.c b/migration/savevm.c
index c52cbbeb3d..254e51de34 100644
--- a/migration/savevm.c
+++ b/migration/savevm.c
@@ -2093,16 +2093,11 @@ int load_vmstate(const char *name)
/* Flush all IO requests so they don't interfere with the new state. */
bdrv_drain_all();
- bs = NULL;
- while ((bs = bdrv_next(bs))) {
- if (bdrv_can_snapshot(bs)) {
- ret = bdrv_snapshot_goto(bs, name);
- if (ret < 0) {
- error_report("Error %d while activating snapshot '%s' on '%s'",
- ret, name, bdrv_get_device_name(bs));
- return ret;
- }
- }
+ ret = bdrv_all_goto_snapshot(name, &bs);
+ if (ret < 0) {
+ error_report("Error %d while activating snapshot '%s' on '%s'",
+ ret, name, bdrv_get_device_name(bs));
+ return ret;
}
/* restore the VM state */