All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Daniel P. Berrangé" <berrange@redhat.com>
To: qemu-devel@nongnu.org
Cc: "Kevin Wolf" <kwolf@redhat.com>,
	"Daniel P. Berrangé" <berrange@redhat.com>,
	qemu-block@nongnu.org, "Juan Quintela" <quintela@redhat.com>,
	"John Snow" <jsnow@redhat.com>,
	"Dr. David Alan Gilbert" <dgilbert@redhat.com>,
	"Max Reitz" <mreitz@redhat.com>,
	"Pavel Dovgalyuk" <pavel.dovgaluk@ispras.ru>,
	"Paolo Bonzini" <pbonzini@redhat.com>,
	"Markus Armbruster" <armbru@redhat.com>
Subject: [PATCH v10 09/12] migration: introduce a delete_snapshot wrapper
Date: Tue,  2 Feb 2021 15:41:35 +0000	[thread overview]
Message-ID: <20210202154138.246464-10-berrange@redhat.com> (raw)
In-Reply-To: <20210202154138.246464-1-berrange@redhat.com>

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 <eblake@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
---
 include/migration/snapshot.h | 13 +++++++++++++
 migration/savevm.c           | 14 ++++++++++++++
 monitor/hmp-cmds.c           |  2 +-
 3 files changed, 28 insertions(+), 1 deletion(-)

diff --git a/include/migration/snapshot.h b/include/migration/snapshot.h
index 3bdbef435b..e72083b117 100644
--- a/include/migration/snapshot.h
+++ b/include/migration/snapshot.h
@@ -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
diff --git a/migration/savevm.c b/migration/savevm.c
index fde680efc6..48186918a3 100644
--- a/migration/savevm.c
+++ b/migration/savevm.c
@@ -3036,6 +3036,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,
diff --git a/monitor/hmp-cmds.c b/monitor/hmp-cmds.c
index ad8bf23577..f8dc3861a6 100644
--- a/monitor/hmp-cmds.c
+++ b/monitor/hmp-cmds.c
@@ -1150,7 +1150,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);
 }
 
-- 
2.29.2



  parent reply	other threads:[~2021-02-02 15:59 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-02-02 15:41 [PATCH v10 00/12] migration: bring improved savevm/loadvm/delvm to QMP Daniel P. Berrangé
2021-02-02 15:41 ` [PATCH v10 01/12] block: push error reporting into bdrv_all_*_snapshot functions Daniel P. Berrangé
2021-02-02 17:25   ` Eric Blake
2021-02-02 15:41 ` [PATCH v10 02/12] migration: Make save_snapshot() return bool, not 0/-1 Daniel P. Berrangé
2021-02-02 15:41 ` [PATCH v10 03/12] migration: stop returning errno from load_snapshot() Daniel P. Berrangé
2021-02-02 15:41 ` [PATCH v10 04/12] block: add ability to specify list of blockdevs during snapshot Daniel P. Berrangé
2021-02-02 15:41 ` [PATCH v10 05/12] block: allow specifying name of block device for vmstate storage Daniel P. Berrangé
2021-02-02 15:41 ` [PATCH v10 06/12] block: rename and alter bdrv_all_find_snapshot semantics Daniel P. Berrangé
2021-02-02 15:41 ` [PATCH v10 07/12] migration: control whether snapshots are ovewritten Daniel P. Berrangé
2021-02-02 15:41 ` [PATCH v10 08/12] migration: wire up support for snapshot device selection Daniel P. Berrangé
2021-02-02 15:41 ` Daniel P. Berrangé [this message]
2021-02-02 15:41 ` [PATCH v10 10/12] iotests: add support for capturing and matching QMP events Daniel P. Berrangé
2021-02-02 15:41 ` [PATCH v10 11/12] iotests: fix loading of common.config from tests/ subdir Daniel P. Berrangé
2021-02-02 16:13   ` Vladimir Sementsov-Ogievskiy
2021-02-02 16:24   ` Philippe Mathieu-Daudé
2021-02-02 15:41 ` [PATCH v10 12/12] migration: introduce snapshot-{save, load, delete} QMP commands Daniel P. Berrangé
2021-02-02 18:14   ` [PATCH v10 12/12] migration: introduce snapshot-{save,load,delete} " Eric Blake
2021-02-02 18:43     ` Vladimir Sementsov-Ogievskiy
2021-02-02 18:56       ` Eric Blake

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20210202154138.246464-10-berrange@redhat.com \
    --to=berrange@redhat.com \
    --cc=armbru@redhat.com \
    --cc=dgilbert@redhat.com \
    --cc=jsnow@redhat.com \
    --cc=kwolf@redhat.com \
    --cc=mreitz@redhat.com \
    --cc=pavel.dovgaluk@ispras.ru \
    --cc=pbonzini@redhat.com \
    --cc=qemu-block@nongnu.org \
    --cc=qemu-devel@nongnu.org \
    --cc=quintela@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.