From: "Denis V. Lunev" <den@openvz.org>
Cc: Juan Quintela <quintela@redhat.com>,
qemu-devel@nongnu.org, Markus Armbruster <armbru@redhat.com>,
Amit Shah <amit.shah@redhat.com>,
"Denis V. Lunev" <den@openvz.org>
Subject: [Qemu-devel] [PATCH 1/5] migration: split hmp_savevm to do_savevm and hmp_savevm wrapper
Date: Mon, 16 Nov 2015 18:32:26 +0300 [thread overview]
Message-ID: <1447687950-29350-2-git-send-email-den@openvz.org> (raw)
In-Reply-To: <1447687950-29350-1-git-send-email-den@openvz.org>
This would be useful in the next step when QMP version of this call will
be introduced.
Signed-off-by: Denis V. Lunev <den@openvz.org>
CC: Juan Quintela <quintela@redhat.com>
CC: Amit Shah <amit.shah@redhat.com>
CC: Markus Armbruster <armbru@redhat.com>
CC: Eric Blake <eblake@redhat.com>
---
migration/savevm.c | 38 +++++++++++++++++++++++---------------
1 file changed, 23 insertions(+), 15 deletions(-)
diff --git a/migration/savevm.c b/migration/savevm.c
index 2c65ab2..f83ffd0 100644
--- a/migration/savevm.c
+++ b/migration/savevm.c
@@ -1905,7 +1905,7 @@ int qemu_loadvm_state(QEMUFile *f)
return ret;
}
-void hmp_savevm(Monitor *mon, const QDict *qdict)
+static void do_savevm(const char *name, Error **errp)
{
BlockDriverState *bs, *bs1;
QEMUSnapshotInfo sn1, *sn = &sn1, old_sn1, *old_sn = &old_sn1;
@@ -1915,28 +1915,26 @@ void hmp_savevm(Monitor *mon, const QDict *qdict)
uint64_t vm_state_size;
qemu_timeval tv;
struct tm tm;
- const char *name = qdict_get_try_str(qdict, "name");
Error *local_err = NULL;
AioContext *aio_context;
if (!bdrv_all_can_snapshot(&bs)) {
- monitor_printf(mon, "Device '%s' is writable but does not "
- "support snapshots.\n", bdrv_get_device_name(bs));
+ error_setg(errp, "Device '%s' is writable but does not "
+ "support snapshots.", bdrv_get_device_name(bs));
return;
}
/* Delete old snapshots of the same name */
if (name && bdrv_all_delete_snapshot(name, &bs1, &local_err) < 0) {
- monitor_printf(mon,
- "Error while deleting snapshot on device '%s': %s\n",
- bdrv_get_device_name(bs1), error_get_pretty(local_err));
+ error_setg(errp, "Error while deleting snapshot on device '%s': %s",
+ bdrv_get_device_name(bs1), error_get_pretty(local_err));
error_free(local_err);
return;
}
bs = bdrv_all_find_vmstate_bs();
if (bs == NULL) {
- monitor_printf(mon, "No block device can accept snapshots\n");
+ error_setg(errp, "No block device can accept snapshots");
return;
}
aio_context = bdrv_get_aio_context(bs);
@@ -1945,7 +1943,7 @@ void hmp_savevm(Monitor *mon, const QDict *qdict)
ret = global_state_store();
if (ret) {
- monitor_printf(mon, "Error saving global state\n");
+ error_setg(errp, "Error saving global state");
return;
}
vm_stop(RUN_STATE_SAVE_VM);
@@ -1977,22 +1975,20 @@ void hmp_savevm(Monitor *mon, const QDict *qdict)
/* save the VM state */
f = qemu_fopen_bdrv(bs, 1);
if (!f) {
- monitor_printf(mon, "Could not open VM state file\n");
+ error_setg(errp, "Could not open VM state file");
goto the_end;
}
- ret = qemu_savevm_state(f, &local_err);
+ ret = qemu_savevm_state(f, errp);
vm_state_size = qemu_ftell(f);
qemu_fclose(f);
if (ret < 0) {
- monitor_printf(mon, "%s\n", error_get_pretty(local_err));
- error_free(local_err);
goto the_end;
}
ret = bdrv_all_create_snapshot(sn, bs, vm_state_size, &bs);
if (ret < 0) {
- monitor_printf(mon, "Error while creating snapshot on '%s'\n",
- bdrv_get_device_name(bs));
+ error_setg(errp, "Error while creating snapshot on '%s'",
+ bdrv_get_device_name(bs));
}
the_end:
@@ -2002,6 +1998,18 @@ void hmp_savevm(Monitor *mon, const QDict *qdict)
}
}
+void hmp_savevm(Monitor *mon, const QDict *qdict)
+{
+ Error *local_err = NULL;
+
+ do_savevm(qdict_get_try_str(qdict, "name"), &local_err);
+
+ if (local_err != NULL) {
+ monitor_printf(mon, "%s\n", error_get_pretty(local_err));
+ error_free(local_err);
+ }
+}
+
void qmp_xen_save_devices_state(const char *filename, Error **errp)
{
QEMUFile *f;
--
2.5.0
next prev parent reply other threads:[~2015-11-16 15:32 UTC|newest]
Thread overview: 31+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-11-16 15:32 [Qemu-devel] [PATCH 0/5] QMP wrappers for VM snapshot operations Denis V. Lunev
2015-11-16 15:32 ` Denis V. Lunev [this message]
2015-11-17 8:56 ` [Qemu-devel] [PATCH 1/5] migration: split hmp_savevm to do_savevm and hmp_savevm wrapper Markus Armbruster
2015-11-18 11:29 ` Juan Quintela
2015-11-16 15:32 ` [Qemu-devel] [PATCH 2/5] qmp: create qmp_savevm command Denis V. Lunev
2015-11-17 10:10 ` Markus Armbruster
2015-11-18 11:36 ` Juan Quintela
2015-12-01 14:28 ` Denis V. Lunev
2015-12-01 15:01 ` Eric Blake
2015-12-01 15:03 ` Markus Armbruster
2015-12-01 14:29 ` Denis V. Lunev
2015-12-01 15:05 ` Markus Armbruster
2015-12-01 15:18 ` Denis V. Lunev
2015-11-16 15:32 ` [Qemu-devel] [PATCH 3/5] qmp: create qmp_delvm command Denis V. Lunev
2015-11-17 10:14 ` Markus Armbruster
2015-11-18 11:37 ` Juan Quintela
2015-11-18 11:37 ` Juan Quintela
2015-11-16 15:32 ` [Qemu-devel] [PATCH 4/5] migration: improve error reporting for hmp_loadvm Denis V. Lunev
2015-11-17 10:34 ` Markus Armbruster
2015-11-16 15:32 ` [Qemu-devel] [PATCH 5/5] qmp: create QMP implementation of loadvm command Denis V. Lunev
2015-11-18 11:41 ` Juan Quintela
2015-12-01 15:19 ` Denis V. Lunev
2015-11-17 10:33 ` [Qemu-devel] [PATCH 0/5] QMP wrappers for VM snapshot operations Markus Armbruster
2015-11-17 10:44 ` Denis V. Lunev
-- strict thread matches above, loose matches on Subject: below --
2015-12-04 14:44 [Qemu-devel] [PATCH v2 for 2.6 " Denis V. Lunev
2015-12-04 14:44 ` [Qemu-devel] [PATCH 1/5] migration: split hmp_savevm to do_savevm and hmp_savevm wrapper Denis V. Lunev
2015-12-23 21:27 ` Eric Blake
2016-01-08 11:27 ` Denis V. Lunev
2016-01-08 16:14 ` Eric Blake
2016-01-08 16:40 ` Denis V. Lunev
2016-01-08 17:54 ` Eric Blake
2016-01-08 17:59 ` Denis V. Lunev
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=1447687950-29350-2-git-send-email-den@openvz.org \
--to=den@openvz.org \
--cc=amit.shah@redhat.com \
--cc=armbru@redhat.com \
--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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).