From: Maxim Levitsky <mlevitsk@redhat.com>
To: Markus Armbruster <armbru@redhat.com>
Cc: Kevin Wolf <kwolf@redhat.com>, Peter Krempa <pkrempa@redhat.com>,
qemu-block@nongnu.org, qemu-devel@nongnu.org,
Max Reitz <mreitz@redhat.com>, Gerd Hoffmann <kraxel@redhat.com>,
"Dr. David Alan Gilbert" <dgilbert@redhat.com>
Subject: Re: [PATCH v3 13/13] monitor/hmp: Prefer to use hmp_handle_error for error reporting in block hmp commands
Date: Wed, 29 Jan 2020 13:05:18 +0200 [thread overview]
Message-ID: <7b796fc452a817ea4f39f4ebdd8a2acce638788f.camel@redhat.com> (raw)
In-Reply-To: <87eevi7e1e.fsf@dusky.pond.sub.org>
On Wed, 2020-01-29 at 11:27 +0100, Markus Armbruster wrote:
> Maxim Levitsky <mlevitsk@redhat.com> writes:
>
> > On Mon, 2020-01-27 at 12:36 +0200, Maxim Levitsky wrote:
> > > This way they all will be prefixed with 'Error:' which some parsers
> > > (e.g libvirt) need
> > >
> > > Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=1719169
> > >
> > > Signed-off-by: Maxim Levitsky <mlevitsk@redhat.com>
> >
> > And I probably will keep that patch since it is not invasive and
> > still does a nice refactoring.
> > Thoughts?
>
> The commit message needs updating: libvirt doesn't actually need this
> anymore.
>
> What remains is "nice refactoring". Let's look at the patch from that
> perspective.
>
> >
> > Best regards,
> > Maxim Levitsky
> >
> > > ---
> > > block/monitor/block-hmp-cmds.c | 35 ++++++++++++++++++++--------------
> > > 1 file changed, 21 insertions(+), 14 deletions(-)
> > >
> > > diff --git a/block/monitor/block-hmp-cmds.c b/block/monitor/block-hmp-cmds.c
> > > index 7bbe4e3814..5b060d380d 100644
> > > --- a/block/monitor/block-hmp-cmds.c
> > > +++ b/block/monitor/block-hmp-cmds.c
> > > @@ -84,7 +84,6 @@ void hmp_drive_add(Monitor *mon, const QDict *qdict)
> > > mc = MACHINE_GET_CLASS(current_machine);
> > > dinfo = drive_new(opts, mc->block_default_type, &err);
> > > if (err) {
> > > - error_report_err(err);
> > > qemu_opts_del(opts);
> > > goto err;
> > > }
> > > @@ -98,7 +97,7 @@ void hmp_drive_add(Monitor *mon, const QDict *qdict)
> > > monitor_printf(mon, "OK\n");
> > > break;
> > > default:
> > > - monitor_printf(mon, "Can't hot-add drive to type %d\n", dinfo->type);
> > > + error_setg(&err, "Can't hot-add drive to type %d", dinfo->type);
> > > goto err;
> > > }
> > > return;
> > > @@ -109,6 +108,7 @@ err:
> > > monitor_remove_blk(blk);
> > > blk_unref(blk);
> > > }
> > > + hmp_handle_error(mon, err);
> > > }
>
> Is this really nicer?
>
> > >
> > > void hmp_drive_del(Monitor *mon, const QDict *qdict)
> > > @@ -130,14 +130,14 @@ void hmp_drive_del(Monitor *mon, const QDict *qdict)
> > >
> > > blk = blk_by_name(id);
> > > if (!blk) {
> > > - error_report("Device '%s' not found", id);
> > > - return;
> > > + error_setg(&local_err, "Device '%s' not found", id);
> > > + goto err;
> > > }
> > >
> > > if (!blk_legacy_dinfo(blk)) {
> > > - error_report("Deleting device added with blockdev-add"
> > > - " is not supported");
> > > - return;
> > > + error_setg(&local_err,
> > > + "Deleting device added with blockdev-add is not supported");
> > > + goto err;
> > > }
> > >
> > > aio_context = blk_get_aio_context(blk);
> > > @@ -146,9 +146,8 @@ void hmp_drive_del(Monitor *mon, const QDict *qdict)
> > > bs = blk_bs(blk);
> > > if (bs) {
> > > if (bdrv_op_is_blocked(bs, BLOCK_OP_TYPE_DRIVE_DEL, &local_err)) {
> > > - error_report_err(local_err);
> > > aio_context_release(aio_context);
> > > - return;
> > > + goto err;
> > > }
> > >
> > > blk_remove_bs(blk);
> > > @@ -169,12 +168,15 @@ void hmp_drive_del(Monitor *mon, const QDict *qdict)
> > > }
> > >
> > > aio_context_release(aio_context);
> > > +err:
> > > + hmp_handle_error(mon, local_err);
> > > }
>
> Likewise.
>
> > >
> > > void hmp_commit(Monitor *mon, const QDict *qdict)
> > > {
> > > const char *device = qdict_get_str(qdict, "device");
> > > BlockBackend *blk;
> > > + Error *local_err = NULL;
> > > int ret;
> > >
> > > if (!strcmp(device, "all")) {
> > > @@ -185,12 +187,12 @@ void hmp_commit(Monitor *mon, const QDict *qdict)
> > >
> > > blk = blk_by_name(device);
> > > if (!blk) {
> > > - error_report("Device '%s' not found", device);
> > > - return;
> > > + error_setg(&local_err, "Device '%s' not found", device);
> > > + goto err;
> > > }
> > > if (!blk_is_available(blk)) {
> > > - error_report("Device '%s' has no medium", device);
> > > - return;
> > > + error_setg(&local_err, "Device '%s' has no medium", device);
> > > + goto err;
> > > }
> > >
> > > bs = blk_bs(blk);
> > > @@ -202,8 +204,13 @@ void hmp_commit(Monitor *mon, const QDict *qdict)
> > > aio_context_release(aio_context);
> > > }
> > > if (ret < 0) {
> > > - error_report("'commit' error for '%s': %s", device, strerror(-ret));
> > > + error_setg(&local_err,
> > > + "'commit' error for '%s': %s", device, strerror(-ret));
> > > + goto err;
> > > }
> > > + return;
> > > +err:
> > > + hmp_handle_error(mon, local_err);
> > > }
> > >
> > > void hmp_drive_mirror(Monitor *mon, const QDict *qdict)
>
> Likewise.
>
> Up to the code's maintainers Kevin & Max.
Yep.
In theory, if I understand correctly we should reduce usage of monitor_printf,
but yes, without libvirt justification I don't mind dropping this.
I hope that the rest of the patches will make it, so that this work is not
wasted.
Thanks for the review!
Best regards,
Maxim Levitsky
next prev parent reply other threads:[~2020-01-29 11:06 UTC|newest]
Thread overview: 48+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-01-27 10:36 [PATCH v3 00/13] RFC: [for 5.0]: HMP monitor handlers cleanups Maxim Levitsky
2020-01-27 10:36 ` [PATCH v3 01/13] usb/dev-storage: remove unused include Maxim Levitsky
2020-01-27 10:49 ` Philippe Mathieu-Daudé
2020-01-27 10:36 ` [PATCH v3 02/13] monitor/hmp: uninline add_init_drive Maxim Levitsky
2020-01-27 10:36 ` [PATCH v3 03/13] monitor/hmp: rename device-hotplug.c to block/monitor/block-hmp-cmds.c Maxim Levitsky
2020-01-28 16:56 ` Dr. David Alan Gilbert
2020-01-28 19:28 ` Maxim Levitsky
2020-01-29 10:19 ` Markus Armbruster
2020-01-29 11:31 ` Maxim Levitsky
2020-01-27 10:36 ` [PATCH v3 04/13] monitor/hmp: move hmp_drive_del and hmp_commit to block-hmp-cmds.c Maxim Levitsky
2020-01-28 17:51 ` Dr. David Alan Gilbert
2020-01-28 19:29 ` Maxim Levitsky
2020-01-27 10:36 ` [PATCH v3 05/13] monitor/hmp: move hmp_drive_mirror and hmp_drive_backup " Maxim Levitsky
2020-01-28 17:59 ` Dr. David Alan Gilbert
2020-01-27 10:36 ` [PATCH v3 06/13] monitor/hmp: move hmp_block_job* " Maxim Levitsky
2020-01-28 18:11 ` Dr. David Alan Gilbert
2020-01-28 18:15 ` Dr. David Alan Gilbert
2020-01-27 10:36 ` [PATCH v3 07/13] monitor/hmp: move hmp_snapshot_* " Maxim Levitsky
2020-01-28 18:53 ` Dr. David Alan Gilbert
2020-01-27 10:36 ` [PATCH v3 08/13] monitor/hmp: move hmp_nbd_server* " Maxim Levitsky
2020-01-28 18:56 ` Dr. David Alan Gilbert
2020-01-28 20:05 ` Eric Blake
2020-01-27 10:36 ` [PATCH v3 09/13] monitor/hmp: move remaining hmp_block* functions " Maxim Levitsky
2020-01-28 18:45 ` Dr. David Alan Gilbert
2020-01-28 18:51 ` Dr. David Alan Gilbert
2020-01-27 10:36 ` [PATCH v3 10/13] monitor/hmp: move hmp_info_block* " Maxim Levitsky
2020-01-28 19:00 ` Dr. David Alan Gilbert
2020-01-27 10:36 ` [PATCH v3 11/13] monitor: Move hmp_drive_add_node " Maxim Levitsky
2020-01-28 19:03 ` Dr. David Alan Gilbert
2020-01-28 19:30 ` Maxim Levitsky
2020-01-27 10:36 ` [PATCH v3 12/13] add 'error' prefix to vreport Maxim Levitsky
2020-01-28 19:30 ` Maxim Levitsky
2020-01-29 10:38 ` Markus Armbruster
2020-01-29 10:58 ` Maxim Levitsky
2020-01-27 10:36 ` [PATCH v3 13/13] monitor/hmp: Prefer to use hmp_handle_error for error reporting in block hmp commands Maxim Levitsky
2020-01-28 19:31 ` Maxim Levitsky
2020-01-29 10:27 ` Markus Armbruster
2020-01-29 11:05 ` Maxim Levitsky [this message]
2020-01-27 10:55 ` [PATCH v3 00/13] RFC: [for 5.0]: HMP monitor handlers cleanups no-reply
2020-01-27 10:59 ` Maxim Levitsky
2020-01-27 19:39 ` John Snow
2020-01-27 20:43 ` Peter Krempa
2020-01-27 21:01 ` John Snow
2020-01-28 9:13 ` Ján Tomko
2020-01-28 16:47 ` Dr. David Alan Gilbert
2020-02-05 23:25 ` John Snow
2020-02-06 9:35 ` Dr. David Alan Gilbert
2020-01-28 8:17 ` Markus Armbruster
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=7b796fc452a817ea4f39f4ebdd8a2acce638788f.camel@redhat.com \
--to=mlevitsk@redhat.com \
--cc=armbru@redhat.com \
--cc=dgilbert@redhat.com \
--cc=kraxel@redhat.com \
--cc=kwolf@redhat.com \
--cc=mreitz@redhat.com \
--cc=pkrempa@redhat.com \
--cc=qemu-block@nongnu.org \
--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 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).