qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [RFC] util/error-report: Add "error: " prefix for error-level report


From: Paolo Bonzini
Subject: Re: [RFC] util/error-report: Add "error: " prefix for error-level report
Date: Fri, 29 Mar 2024 12:10:17 +0100

On Fri, Mar 29, 2024 at 10:37 AM <no-reply@patchew.org> wrote:
> > This was done in the context of inheriting the original error_report()
> > interface without the prefix style. And it was also useful to have a
> > means of error handling, such as exit(), when error occurs, so that the
> > error message - the most serious level - can be noticed by the user.
> >
> > Nowadays, however, error_report() and its variants have a tendency to be
> > "abused": it is used a lot just for the sake of logging something more
> > noticeable than the "warn" or "info" level, in the absence of
> > appropriate error handling logic.

Unfortunately, this is the reason why you _cannot_ do what this patch does.

For example:

  error_reportf_err(local_err, "Disconnect client, due to: ");
  error_report("terminating on signal %d", shutdown_signal);

This should not be prepending "error" - it's not an error.

  error_report_once("%s: detected read error on DMAR slpte "

This is a guest error, so "error:" is probably not a good idea (it
should use qemu_log_mask).

And so on. :(

Paolo

> > But, in the use case above, due to the lack of a prefix, it is in fact
> > less informative to the user than warn_report()/info_report() (with
> > "warn:" or "info: " prfix), which does not match its highest level.
> >
> > Therefore, add "error: " prefix for error-level report.
> >
> > [1]: https://lore.kernel.org/qemu-devel/87r2xuay5h.fsf@dusky.pond.sub.org/#t
> >
> > Signed-off-by: Zhao Liu <zhao1.liu@intel.com>
> > ---
> >   util/error-report.c | 1 +
> >   1 file changed, 1 insertion(+)
> >
> > diff --git a/util/error-report.c b/util/error-report.c
> > index 6e44a5573217..e981c0b032f0 100644
> > --- a/util/error-report.c
> > +++ b/util/error-report.c
> > @@ -213,6 +213,7 @@ static void vreport(report_type type, const char *fmt, 
> > va_list ap)
> >
> >       switch (type) {
> >       case REPORT_TYPE_ERROR:
> > +        error_printf("error: ");
> >           break;
> >       case REPORT_TYPE_WARNING:
> >           error_printf("warning: ");
>
> Sounds like a good idea to me, but I think you should then also remove
> the hard-coded "error:" strings in the various error_reports():
>
> $ grep -ri 'error_report.*"error:'
> migration/block-dirty-bitmap.c:        error_report("Error: block device name 
> is not set");
> migration/block-dirty-bitmap.c:                error_report("Error: Unknown 
> bitmap alias '%s' on node "
> migration/block-dirty-bitmap.c:                error_report("Error: unknown 
> dirty bitmap "
> migration/block-dirty-bitmap.c:        error_report("Error: block device name 
> is not set");
> target/i386/kvm/kvm.c:        error_report("error: failed to set MSR 0x%" 
> PRIx32 " to 0x%" PRIx64,
> target/i386/kvm/kvm.c:        error_report("error: failed to get MSR 0x%" 
> PRIx32,
> util/vhost-user-server.c:        error_report("Error: too big message 
> request: %d, "
> accel/hvf/hvf-all.c:        error_report("Error: HV_ERROR");
> accel/hvf/hvf-all.c:        error_report("Error: HV_BUSY");
> accel/hvf/hvf-all.c:        error_report("Error: HV_BAD_ARGUMENT");
> accel/hvf/hvf-all.c:        error_report("Error: HV_NO_RESOURCES");
> accel/hvf/hvf-all.c:        error_report("Error: HV_NO_DEVICE");
> accel/hvf/hvf-all.c:        error_report("Error: HV_UNSUPPORTED");
> accel/hvf/hvf-all.c:        error_report("Error: HV_DENIED");
> monitor/hmp-cmds.c:        error_reportf_err(err, "Error: ");
> hw/arm/xlnx-zcu102.c:        error_report("ERROR: RAM size 0x%" PRIx64 " 
> above max supported of "
> hw/block/dataplane/xen-block.c:        error_report("error: unknown operation 
> (%d)", request->req.operation);
> hw/block/dataplane/xen-block.c:        error_report("error: write req for ro 
> device");
> hw/block/dataplane/xen-block.c:            error_report("error: nr_segments 
> too big");
> hw/block/dataplane/xen-block.c:            error_report("error: first > last 
> sector");
> hw/block/dataplane/xen-block.c:            error_report("error: page 
> crossing");
> hw/block/dataplane/xen-block.c:        error_report("error: access beyond end 
> of file");
> hw/rdma/rdma_backend.c:            rdma_error_report("Error: Not a MAD 
> request, skipping");
> hw/s390x/s390-skeys.c:        error_report("Error: Setting storage keys for 
> pages with unallocated "
> hw/s390x/s390-skeys.c:        error_report("Error: Getting storage keys for 
> pages with unallocated "
> hw/usb/bus.c:        error_report("Error: no usb bus to attach usbdevice %s, "
> gdbstub/gdbstub.c:            error_report("Error: Bad gdb register numbering 
> for '%s', "
>
>   Thomas
>




reply via email to

[Prev in Thread] Current Thread [Next in Thread]