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