[libvirt] [PATCH 2/6] vz: get additional error information from job correctly

Maxim Nestratov mnestratov at virtuozzo.com
Fri Aug 12 14:16:38 UTC 2016


12-Aug-16 17:08, Mikhail Feoktistov пишет:

>
>
> On 10.08.2016 20:44, Maxim Nestratov wrote:
>> First, make function logPrlEventErrorHelper be void and only
>> print information (if any) from an event.
>> Second, don't rewrite original error with any errors we get
>> during parsing event info.
>> Third, ignore PRL_ERR_NO_DATA at all.
>>
>> Signed-off-by: Maxim Nestratov <mnestratov at virtuozzo.com>
>> ---
>>   src/vz/vz_sdk.c | 32 ++++++++++++++------------------
>>   1 file changed, 14 insertions(+), 18 deletions(-)
>>
>> diff --git a/src/vz/vz_sdk.c b/src/vz/vz_sdk.c
>> index f81b320..45cac65 100644
>> --- a/src/vz/vz_sdk.c
>> +++ b/src/vz/vz_sdk.c
>> @@ -105,19 +105,12 @@ logPrlErrorHelper(PRL_RESULT err, const char *filename,
>>           }                                          \
>>       } while (0)
>>   -static PRL_RESULT
>> +static void
>>   logPrlEventErrorHelper(PRL_HANDLE event, const char *filename,
>>                          const char *funcname, size_t linenr)
>>   {
>> -    PRL_RESULT ret, retCode;
>>       char *msg1 = NULL, *msg2 = NULL;
>>       PRL_UINT32 len = 0;
>> -    int err = -1;
>> -
>> -    if ((ret = PrlEvent_GetErrCode(event, &retCode))) {
>> -        logPrlError(ret);
>> -        return ret;
>> -    }
>>         PrlEvent_GetErrString(event, PRL_TRUE, PRL_FALSE, NULL, &len);
>>   @@ -136,13 +129,9 @@ logPrlEventErrorHelper(PRL_HANDLE event, const char *filename,
>>       virReportErrorHelper(VIR_FROM_THIS, VIR_ERR_INTERNAL_ERROR,
>>                            filename, funcname, linenr,
>>                            _("%s %s"), msg1, msg2);
>> -    err = 0;
>> -
>>    cleanup:
>>       VIR_FREE(msg1);
>>       VIR_FREE(msg2);
>> -
>> -    return err;
>>   }
>>     static PRL_RESULT
>> @@ -152,12 +141,12 @@ getJobResultHelper(PRL_HANDLE job, unsigned int timeout, PRL_HANDLE *result,
>>   {
>>       PRL_RESULT ret, retCode;
>>   -    if ((ret = PrlJob_Wait(job, timeout))) {
>> +    if (PRL_FAILED(ret = PrlJob_Wait(job, timeout))) {
>>           logPrlErrorHelper(ret, filename, funcname, linenr);
>>           goto cleanup;
>>       }
>>   -    if ((ret = PrlJob_GetRetCode(job, &retCode))) {
>> +    if (PRL_FAILED(ret = PrlJob_GetRetCode(job, &retCode))) {
>>           logPrlErrorHelper(ret, filename, funcname, linenr);
>>           goto cleanup;
>>       }
>> @@ -165,17 +154,24 @@ getJobResultHelper(PRL_HANDLE job, unsigned int timeout, PRL_HANDLE *result,
>>       if (retCode) {
>>           PRL_HANDLE err_handle;
>>   +        ret = retCode;
>> +
> I think we don't need to store retCode to ret

Actually returning what we get from  PrlJob_GetRetCode  is one the reasons of this patch.
But you are right that we don't have to rewrite it later two lines below.

>
>>           /* Sometimes it's possible to get additional error info. */
>> -        if ((ret = PrlJob_GetError(job, &err_handle))) {
>> +        if (PRL_FAILED(ret = PrlJob_GetError(job, &err_handle))) {

there should have been the following:

+        if (PRL_FAILED(retCode = PrlJob_GetError(job, &err_handle))) {

I messed things up while rebasing

>>               logPrlErrorHelper(ret, filename, funcname, linenr);
>>               goto cleanup;
>>           }
>>   -        if (logPrlEventErrorHelper(err_handle, filename, funcname, linenr))
>> -            logPrlErrorHelper(retCode, filename, funcname, linenr);
>> +        if (PRL_FAILED(retCode = PrlEvent_GetErrCode(err_handle, &retCode))) {
>> +            logPrlErrorHelper(ret, filename, funcname, linenr);
>> +            if (PRL_ERR_NO_DATA != retCode)
>> +                logPrlError(retCode);
>> +            goto cleanup;
>> +        }
>> +
>> +        logPrlEventErrorHelper(err_handle, filename, funcname, linenr);
>>             PrlHandle_Free(err_handle);
>> -        ret = retCode;
>>       } else {
>>           ret = PrlJob_GetResult(job, result);
>>           if (PRL_FAILED(ret)) {
>




More information about the libvir-list mailing list