"Gonglei (Arei)" <arei.gong...@huawei.com> writes:

> Hi,
>
>> 
>> > On Thu, Jul 31, 2014 at 05:47:26PM +0800, arei.gong...@huawei.com wrote:
>> > [...]
>> > > +void modify_boot_device_path(int32_t bootindex, DeviceState *dev,
>> > > +                             const char *suffix)
>> > > +{
>> > > +    FWBootEntry *i, *old_entry = NULL;
>> > > +
>> > > +    assert(dev != NULL || suffix != NULL);
>> > > +
>> > > +    if (bootindex >= 0) {
>> > > +        QTAILQ_FOREACH(i, &fw_boot_order, link) {
>> > > +            if (i->bootindex == bootindex) {
>> > > +                qerror_report(ERROR_CLASS_GENERIC_ERROR,
>> > > +                              "The bootindex %d has already been
>> used",
>> > > +                              bootindex);
>> >
>> > Isn't an Error** parameter preferable here, instead of using
>> > qerror_report()?
>> 
>> Good catch. I'm not following this series, but using qerror_report() is
>> almost always wrong these days.

Yes.  http://wiki.qemu.org/CodeTransitions#Error_reporting explains:

    qerror_report() is a transitional interface to help with converting
    existing HMP commands to QMP. It should not be used elsewhere. Use
    Error objects instead with error_propagate() and error_setg()
    instead.

> Would you give me some advice? Thanks.
> Using error_report() instead of qerror_report()?

Depends on how the function is used.

If you know this can only run during QEMU startup (e.g. command line
processing) or in a *human* monitor, error_report() is fine.

If the error is propagated up the call chain to some place that reports
it via its Error ** parameter to its caller, then you should consider
passing an Error object created with error_setg() here up the call
chain.

Not the case right now, as your modify_boot_device_path() cannot fail.
Whether that's appropriate I can't tell without examining more of your
patch.

Reply via email to