From: Markus Armbruster <armbru@redhat.com>
To: Cole Robinson <crobinso@redhat.com>
Cc: qemu-devel@nongnu.org, dgilbert@redhat.com
Subject: Re: [Qemu-devel] [PATCH] hmp: delvm: use hmp_handle_error
Date: Fri, 12 Apr 2019 20:15:32 +0200 [thread overview]
Message-ID: <87d0lrjdiz.fsf@dusky.pond.sub.org> (raw)
In-Reply-To: <f61645d0b3720a039423532d49dd65588d9bccd8.1554919328.git.crobinso@redhat.com> (Cole Robinson's message of "Wed, 10 Apr 2019 14:03:31 -0400")
Cole Robinson <crobinso@redhat.com> writes:
> This gives us the consistent 'Error:' prefix added in 66363e9a43f,
> which helps users like libvirt who still need to scrape hmp error
> messages to detect failure.
>
> Signed-off-by: Cole Robinson <crobinso@redhat.com>
> ---
> hmp.c | 7 ++++---
> 1 file changed, 4 insertions(+), 3 deletions(-)
>
> diff --git a/hmp.c b/hmp.c
> index 8eec768088..74a4bfc1f9 100644
> --- a/hmp.c
> +++ b/hmp.c
> @@ -1481,10 +1481,11 @@ void hmp_delvm(Monitor *mon, const QDict *qdict)
> const char *name = qdict_get_str(qdict, "name");
>
> if (bdrv_all_delete_snapshot(name, &bs, &err) < 0) {
> - error_reportf_err(err,
> - "Error while deleting snapshot on device '%s': ",
> - bdrv_get_device_name(bs));
> + error_prepend(&err,
> + "Error while deleting snapshot on device '%s': ",
> + bdrv_get_device_name(bs));
> }
> + hmp_handle_error(mon, &err);
> }
>
> void hmp_info_snapshots(Monitor *mon, const QDict *qdict)
No objection to this patch, just apropos hmp_handle_error().
HMP command handlers look like this:
void hmp_FOO(Monitor *mon, const QDict *qdict)
They can report errors however they like. The monitor core has no
notion of HMP command failure.
Commonly, hmp_FOO() wraps around some qmp_FOO(), or some helper(s) it
shares with qmp_FOO(). These will return errors through an Error **
argument. The sane way for hmp_FOO() to report them is with
hmp_handle_error().
In other words, we get an hmp_handle_error() on most[*] failure paths.
Why not move it into the monitor core?
bool hmp_FOO(Monitor *mon, const QDict *qdict, Error **errp)
While at it, ditch the @mon parameter, because it's always cur_mon
anyway:
bool hmp_FOO(const QDict *qdict, Error **errp)
[*] Common exceptions are failures in code that add convenience over
QMP. These need not produce an Error object. Instead, they may report
with error_report(), or even monitor_printf(). The latter would be in
bad taste.
prev parent reply other threads:[~2019-04-12 18:15 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-04-10 18:03 [Qemu-devel] [PATCH] hmp: delvm: use hmp_handle_error Cole Robinson
2019-04-10 18:27 ` [Qemu-devel] [PATCH for-4.0?] " Eric Blake
2019-04-10 18:27 ` Eric Blake
2019-04-10 18:36 ` Cole Robinson
2019-04-10 18:36 ` Cole Robinson
2019-04-12 12:21 ` Kevin Wolf
2019-04-12 12:21 ` Kevin Wolf
2019-04-12 14:55 ` Eric Blake
2019-04-12 14:55 ` Eric Blake
2019-04-12 18:12 ` Cole Robinson
2019-04-12 18:12 ` Cole Robinson
2019-04-12 18:15 ` Markus Armbruster [this message]
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=87d0lrjdiz.fsf@dusky.pond.sub.org \
--to=armbru@redhat.com \
--cc=crobinso@redhat.com \
--cc=dgilbert@redhat.com \
--cc=qemu-devel@nongnu.org \
/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.