[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH 20/22] savevm: Convert do_savevm() to QObject
From: |
Luiz Capitulino |
Subject: |
[Qemu-devel] [PATCH 20/22] savevm: Convert do_savevm() to QObject |
Date: |
Tue, 20 Apr 2010 18:09:50 -0300 |
Signed-off-by: Luiz Capitulino <address@hidden>
---
qemu-monitor.hx | 3 ++-
savevm.c | 7 +++++--
sysemu.h | 2 +-
3 files changed, 8 insertions(+), 4 deletions(-)
diff --git a/qemu-monitor.hx b/qemu-monitor.hx
index 71cb1a2..9a699d4 100644
--- a/qemu-monitor.hx
+++ b/qemu-monitor.hx
@@ -242,7 +242,8 @@ ETEXI
.args_type = "name:s?",
.params = "[tag|id]",
.help = "save a VM snapshot. If no tag or id are provided, a new
snapshot is created",
- .mhandler.cmd = do_savevm,
+ .user_print = monitor_user_noop,
+ .mhandler.cmd_new = do_savevm,
},
STEXI
diff --git a/savevm.c b/savevm.c
index 8a9e9d1..39a935d 100644
--- a/savevm.c
+++ b/savevm.c
@@ -1664,7 +1664,7 @@ static int del_existing_snapshots(const char *name)
return 0;
}
-void do_savevm(Monitor *mon, const QDict *qdict)
+int do_savevm(Monitor *mon, const QDict *qdict, QObject **ret_data)
{
DriveInfo *dinfo;
BlockDriverState *bs, *bs1;
@@ -1683,7 +1683,7 @@ void do_savevm(Monitor *mon, const QDict *qdict)
bs = get_bs_snapshots();
if (!bs) {
qerror_report(QERR_SNAPSHOT_NO_DEVICE);
- return;
+ return -1;
}
/* ??? Should this occur after vm_stop? */
@@ -1717,6 +1717,7 @@ void do_savevm(Monitor *mon, const QDict *qdict)
/* Delete old snapshots of the same name */
if (name && del_existing_snapshots(name) < 0) {
+ ret = -1;
goto the_end;
}
@@ -1739,6 +1740,7 @@ void do_savevm(Monitor *mon, const QDict *qdict)
sn->vm_state_size = (bs == bs1 ? vm_state_size : 0);
ret = bdrv_snapshot_create(bs1, sn);
if (ret < 0) {
+ /* FIXME: will report multiple failures in QMP */
qerror_report(QERR_SNAPSHOT_CREATE_FAILED,
bdrv_get_device_name(bs1),
get_errno_string(ret));
}
@@ -1748,6 +1750,7 @@ void do_savevm(Monitor *mon, const QDict *qdict)
the_end:
if (saved_vm_running)
vm_start();
+ return (ret < 0 ? -1 : 0);
}
int load_vmstate(const char *name)
diff --git a/sysemu.h b/sysemu.h
index ee14b8c..8d8bb64 100644
--- a/sysemu.h
+++ b/sysemu.h
@@ -53,7 +53,7 @@ int qemu_exit_requested(void);
extern qemu_irq qemu_system_powerdown;
void qemu_system_reset(void);
-void do_savevm(Monitor *mon, const QDict *qdict);
+int do_savevm(Monitor *mon, const QDict *qdict, QObject **ret_data);
int load_vmstate(const char *name);
int do_delvm(Monitor *mon, const QDict *qdict, QObject **ret_data);
void do_info_snapshots(Monitor *mon);
--
1.7.1.rc1.12.ga6018
- [Qemu-devel] [PATCH 15/22] QError: New QERR_SNAPSHOT_NOT_FOUND, (continued)
- [Qemu-devel] [PATCH 15/22] QError: New QERR_SNAPSHOT_NOT_FOUND, Luiz Capitulino, 2010/04/20
- [Qemu-devel] [PATCH 14/22] QError: New QERR_DEVICE_NO_SNAPSHOT, Luiz Capitulino, 2010/04/20
- [Qemu-devel] [PATCH 13/22] QError: New QERR_STATEVM_LOAD_FAILED, Luiz Capitulino, 2010/04/20
- [Qemu-devel] [PATCH 17/22] savevm: delete_snapshot(): Remove unused parameter, Luiz Capitulino, 2010/04/20
- [Qemu-devel] [PATCH 18/22] savevm: Convert do_delvm() to QObject, QError, Luiz Capitulino, 2010/04/20
- [Qemu-devel] [PATCH 19/22] savevm: Convert do_savevm() to QError, Luiz Capitulino, 2010/04/20
- [Qemu-devel] [PATCH 16/22] savevm: Convert delete_snapshot() to QError, Luiz Capitulino, 2010/04/20
- [Qemu-devel] [PATCH 20/22] savevm: Convert do_savevm() to QObject,
Luiz Capitulino <=
- [Qemu-devel] [PATCH 21/22] savevm: Convert do_loadvm() to QError, Luiz Capitulino, 2010/04/20
- [Qemu-devel] [PATCH 22/22] savevm: Convert do_loadvm() to QObject, Luiz Capitulino, 2010/04/20
- [Qemu-devel] Re: [RFC 00/22]: QMP: Convert savevm/loadvm/delvm, Juan Quintela, 2010/04/20