[libvirt] [PATCH v2 3/5] qemuMonitorJSONDelDevice: Return -2 on DeviceNotFound error

Michal Privoznik mprivozn at redhat.com
Thu Mar 14 13:56:49 UTC 2019


On 3/14/19 2:06 PM, Peter Krempa wrote:
> On Thu, Mar 14, 2019 at 13:22:37 +0100, Michal Privoznik wrote:
>> A caller might be interested in differentiating the cause for
>> error, especially if DeviceNotFound error occurred.
>>
>> Signed-off-by: Michal Privoznik <mprivozn at redhat.com>
>> ---
>>   src/qemu/qemu_monitor.c      | 10 ++++++++++
>>   src/qemu/qemu_monitor_json.c |  5 +++++
>>   2 files changed, 15 insertions(+)
>>
>> diff --git a/src/qemu/qemu_monitor.c b/src/qemu/qemu_monitor.c
>> index 8bd4d4d761..5602a20ee4 100644
>> --- a/src/qemu/qemu_monitor.c
>> +++ b/src/qemu/qemu_monitor.c
>> @@ -3008,6 +3008,16 @@ qemuMonitorDriveDel(qemuMonitorPtr mon,
>>   }
>>   
>>   
>> +/**
>> + * @mon: monitor object
>> + * @devalias: alias of the device to detach
>> + *
>> + * Sends device detach request to qemu.
>> + *
>> + * Returns: 0 on success,
>> + *         -2 if DeviceNotFound error encountered
>> + *         -1 otherwise
>> + */
>>   int
>>   qemuMonitorDelDevice(qemuMonitorPtr mon,
>>                        const char *devalias)
>> diff --git a/src/qemu/qemu_monitor_json.c b/src/qemu/qemu_monitor_json.c
>> index 0236323a51..5c16e1f3a1 100644
>> --- a/src/qemu/qemu_monitor_json.c
>> +++ b/src/qemu/qemu_monitor_json.c
>> @@ -4191,6 +4191,11 @@ int qemuMonitorJSONDelDevice(qemuMonitorPtr mon,
>>       if (qemuMonitorJSONCommand(mon, cmd, &reply) < 0)
>>           goto cleanup;
>>   
>> +    if (qemuMonitorJSONHasError(reply, "DeviceNotFound")) {
>> +        ret = -2;
>> +        goto cleanup;
> 
> With this patch you'll stop reporting the error. Given that callers
> currently jump to an error label this would make us return error
> without setting the error object.
> 
> Callers need to be fixed that in case when they choose not to ignore the
> error they report some error.
> 

You mean callers after I do what you suggest in 1/5 (where zpci will 
call qemuMonitorDelDevice() directly)? Because after 4/5 there is only 
one caller which doesn't want the error to be reported. And I guess you 
did not mean to add some code here only to remove it in 4/5, did you?

Michal




More information about the libvir-list mailing list