Eric Blake <ebl...@redhat.com> writes:

> On 02/16/2015 07:44 AM, Markus Armbruster wrote:
>> img_convert() and img_amend() use qemu_opts_do_parse(), which reports
>> errors with qerror_report_err().  Its error messages aren't helpful
>> here, the caller reports one that actually makes sense.  Reproducer:
>> 
>>     $ qemu-img convert -o backing_format=raw in.img out.img
>>     qemu-img: Invalid parameter 'backing_format'
>>     qemu-img: Invalid options for file format 'raw'
>> 
>> To fix, propagate errors through qemu_opts_do_parse().  This lifts the
>> error reporting into callers.  Drop it from img_convert() and
>> img_amend(), keep it in qemu_chr_parse_compat(), bdrv_img_create().
>> 
>> Since I'm touching qemu_opts_do_parse() anyway, write a function
>> comment for it.
>> 
>> Signed-off-by: Markus Armbruster <arm...@redhat.com>
>> ---
>>  block.c               |  5 ++++-
>>  include/qemu/option.h |  3 ++-
>>  qemu-char.c           | 10 ++++++++--
>>  qemu-img.c            | 25 +++++++++++++++++--------
>>  util/qemu-option.c    | 19 +++++++++----------
>>  5 files changed, 40 insertions(+), 22 deletions(-)
>> 
>
>> -int qemu_opts_do_parse(QemuOpts *opts, const char *params, const char 
>> *firstname)
>> +/**
>> + * Store into @opts options parsed from @params.
>
> Reads a bit awkwardly; maybe:
>
> Store options parsed from @params into @opts.

Mentioning parameters in order.  Old habits die hard...

>> + * If @firstname is non-null, the first key=value in @params may omit
>> + * key=, and is treated as if key was @firstname.
>> + * On error, store an error object through @errp if non-null.
>> + */
>> +void qemu_opts_do_parse(QemuOpts *opts, const char *params,
>> +                       const char *firstname, Error **errp)
>>  {
>
> Up to you if you want to improve that; either way, it's in a comment, so
> it doesn't affect correctness, so:
>
> Reviewed-by: Eric Blake <ebl...@redhat.com>

Thanks!

Reply via email to