summaryrefslogtreecommitdiff
path: root/migration/savevm.c
diff options
context:
space:
mode:
authorDenis V. Lunev <den@openvz.org>2015-11-19 09:42:05 +0300
committerJuan Quintela <quintela@redhat.com>2015-11-19 11:50:00 +0100
commit849f96e2f71b52444516a0880fd9d12691b63d20 (patch)
tree21f72b93ade3f4b034ce89c4532b57aab336d477 /migration/savevm.c
parent4c1cdbaad07d067f3d156687d79014ab44387e2c (diff)
downloadqemu-849f96e2f71b52444516a0880fd9d12691b63d20.tar.gz
qemu-849f96e2f71b52444516a0880fd9d12691b63d20.tar.bz2
qemu-849f96e2f71b52444516a0880fd9d12691b63d20.zip
migration: factor our snapshottability check in load_vmstate
We should check that all inserted and not read-only images support snapshotting. This could be made using already invented helper bdrv_all_can_snapshot(). Signed-off-by: Denis V. Lunev <den@openvz.org> Reviewed-by: Juan Quintela <quintela@redhat.com> Reviewed-by: Fam Zheng <famz@redhat.com> CC: Stefan Hajnoczi <stefanha@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/savevm.c')
-rw-r--r--migration/savevm.c15
1 files changed, 7 insertions, 8 deletions
diff --git a/migration/savevm.c b/migration/savevm.c
index 254e51de34..2ecc1b3e09 100644
--- a/migration/savevm.c
+++ b/migration/savevm.c
@@ -2051,6 +2051,12 @@ int load_vmstate(const char *name)
QEMUFile *f;
int ret;
+ if (!bdrv_all_can_snapshot(&bs)) {
+ error_report("Device '%s' is writable but does not support snapshots.",
+ bdrv_get_device_name(bs));
+ return -ENOTSUP;
+ }
+
bs_vm_state = find_vmstate_bs();
if (!bs_vm_state) {
error_report("No block device supports snapshots");
@@ -2071,15 +2077,8 @@ int load_vmstate(const char *name)
writable and check if the requested snapshot is available too. */
bs = NULL;
while ((bs = bdrv_next(bs))) {
-
- if (!bdrv_is_inserted(bs) || bdrv_is_read_only(bs)) {
- continue;
- }
-
if (!bdrv_can_snapshot(bs)) {
- error_report("Device '%s' is writable but does not support snapshots.",
- bdrv_get_device_name(bs));
- return -ENOTSUP;
+ continue;
}
ret = bdrv_snapshot_find(bs, &sn, name);