]> Git Repo - qemu.git/commitdiff
migration: introduce a delete_snapshot wrapper
authorDaniel P. BerrangĂ© <[email protected]>
Thu, 4 Feb 2021 12:48:31 +0000 (12:48 +0000)
committerDr. David Alan Gilbert <[email protected]>
Mon, 8 Feb 2021 11:19:51 +0000 (11:19 +0000)
Make snapshot deletion consistent with the snapshot save
and load commands by using a wrapper around the blockdev
layer. The main difference is that we get upfront validation
of the passed in device list (if any).

Reviewed-by: Eric Blake <[email protected]>
Signed-off-by: Daniel P. BerrangĂ© <[email protected]>
Message-Id: <20210204124834[email protected]>
Signed-off-by: Dr. David Alan Gilbert <[email protected]>
include/migration/snapshot.h
migration/savevm.c
monitor/hmp-cmds.c

index 3bdbef435b0f933b87bdfb1b047b36cdc18c8f2d..e72083b117a65addeb0092a9e3085e23db344993 100644 (file)
@@ -48,4 +48,17 @@ bool load_snapshot(const char *name,
                    bool has_devices, strList *devices,
                    Error **errp);
 
+/**
+ * delete_snapshot: Delete a snapshot.
+ * @name: path to snapshot
+ * @has_devices: whether to use explicit device list
+ * @devices: explicit device list to snapshot
+ * @errp: pointer to error object
+ * On success, return %true.
+ * On failure, store an error through @errp and return %false.
+ */
+bool delete_snapshot(const char *name,
+                    bool has_devices, strList *devices,
+                    Error **errp);
+
 #endif
index 0b27a8c55a302a522492b54c7b7c4a4072d568f5..0c5d61ae20e6b057b3db10e3d3263f7bb12791b2 100644 (file)
@@ -3071,6 +3071,20 @@ err_drain:
     return false;
 }
 
+bool delete_snapshot(const char *name, bool has_devices,
+                     strList *devices, Error **errp)
+{
+    if (!bdrv_all_can_snapshot(has_devices, devices, errp)) {
+        return false;
+    }
+
+    if (bdrv_all_delete_snapshot(name, has_devices, devices, errp) < 0) {
+        return false;
+    }
+
+    return true;
+}
+
 void vmstate_register_ram(MemoryRegion *mr, DeviceState *dev)
 {
     qemu_ram_set_idstr(mr->ram_block,
index 15d4e039ac1ee32fb64318666fc30bb06b5f3e01..3c88a4faef332a5d6a907e91ccf9da112a6b2a8c 100644 (file)
@@ -1159,7 +1159,7 @@ void hmp_delvm(Monitor *mon, const QDict *qdict)
     Error *err = NULL;
     const char *name = qdict_get_str(qdict, "name");
 
-    bdrv_all_delete_snapshot(name, false, NULL, &err);
+    delete_snapshot(name, false, NULL, &err);
     hmp_handle_error(mon, err);
 }
 
This page took 0.038009 seconds and 4 git commands to generate.