Am 20.04.2010 23:09, schrieb Luiz Capitulino:
> Signed-off-by: Luiz Capitulino <lcapitul...@redhat.com>
> ---
> qemu-monitor.hx | 3 ++-
> savevm.c | 14 ++++++++++----
> sysemu.h | 2 +-
> 3 files changed, 13 insertions(+), 6 deletions(-)
>
> diff --git a/qemu-monitor.hx b/qemu-monitor.hx
> index 5ea5748..71cb1a2 100644
> --- a/qemu-monitor.hx
> +++ b/qemu-monitor.hx
> @@ -274,7 +274,8 @@ ETEXI
> .args_type = "name:s",
> .params = "tag|id",
> .help = "delete a VM snapshot from its tag or id",
> - .mhandler.cmd = do_delvm,
> + .user_print = monitor_user_noop,
> + .mhandler.cmd_new = do_delvm,
> },
>
> STEXI
> diff --git a/savevm.c b/savevm.c
> index 643273e..031eeff 100644
> --- a/savevm.c
> +++ b/savevm.c
> @@ -1815,24 +1815,30 @@ int load_vmstate(const char *name)
> return 0;
> }
>
> -void do_delvm(Monitor *mon, const QDict *qdict)
> +int do_delvm(Monitor *mon, const QDict *qdict, QObject **ret_data)
> {
> + int ret;
> DriveInfo *dinfo;
> BlockDriverState *bs, *bs1;
> const char *name = qdict_get_str(qdict, "name");
>
> bs = get_bs_snapshots();
> if (!bs) {
> - monitor_printf(mon, "No block device supports snapshots\n");
> - return;
> + qerror_report(QERR_SNAPSHOT_NO_DEVICE);
> + return -1;
> }
>
> + ret = -1;
> +
> QTAILQ_FOREACH(dinfo, &drives, next) {
> bs1 = dinfo->bdrv;
> if (bdrv_has_snapshot(bs1)) {
> - delete_snapshot(bs1, name);
> + /* FIXME: will report multiple failures in QMP */
> + ret = delete_snapshot(bs1, name);
> }
> }
> +
> + return (ret < 0 ? -1 : 0);
Doesn't this return success when the first drive fails and the second
one succeeds?
Kevin