On 03/11/2017 10:34 AM, Laine Stump wrote:
> On 03/10/2017 04:10 PM, John Ferlan wrote:
>> https://bugzilla.redhat.com/show_bug.cgi?id=1428209
>>
>> Commit id 'bb74a7ffe' neglected to check that both the parent_wwnn
>> parent_wwpn are in the XML if one or the other is similar to how
>> the node device code checked (commit id '2b13361bc').
>>
>> If only one is provided, the "default" is to use a vHBA capable
>> adapter (see commit id '78be2e8b'), so the vHBA could start, but
>> perhaps not on the expected adapter.
>>
>> Signed-off-by: John Ferlan <[email protected]>
>> ---
>>  src/conf/storage_conf.c | 11 +++++++++++
>>  1 file changed, 11 insertions(+)
>>
>> diff --git a/src/conf/storage_conf.c b/src/conf/storage_conf.c
>> index a52eeba..e4d89dd 100644
>> --- a/src/conf/storage_conf.c
>> +++ b/src/conf/storage_conf.c
>> @@ -941,6 +941,17 @@ virStoragePoolDefParseXML(xmlXPathContextPtr ctxt)
>>              if (!virValidateWWN(ret->source.adapter.data.fchost.wwnn) ||
>>                  !virValidateWWN(ret->source.adapter.data.fchost.wwpn))
>>                  goto error;
>> +
>> +            if ((ret->source.adapter.data.fchost.parent_wwnn &&
>> +                 !ret->source.adapter.data.fchost.parent_wwpn) ||
>> +                (!ret->source.adapter.data.fchost.parent_wwnn &&
>> +                 ret->source.adapter.data.fchost.parent_wwpn)) {
> If you want to make this more compact, you could use an XOR. Since there 
> isn't a logical XOR operator in C, you could do this:
>
>                   if (!!ret->source.adapter.data.fchost.parent_wwnn ^
>                        !!ret->source.adapter.data.fchost.parent_wwpn)
>
>
>> +                virReportError(VIR_ERR_XML_ERROR, "%s",
>> +                               _("must supply both parent_wwnn and "
>> +                                 "parent_wwpn not just one or the other"));

While seeing this chunk fly by in patch 7, I realized that this message isn't 
complete - you must supply both of them *or neither of them* but never just one 
 - you left out the bit inside the asterisks.

>> +                    goto error;
>> +            }
>> +
>
> Is there any other identifiable info available at this point that could give 
> more useful context to the log message? If nothing else, maybe log whichever 
> of the two values is set so there would be something for the user to search 
> on when looking for the offending xml. (I see the error log in commit  
> 2b13361bc has the same problem).
>
>>          } else if (ret->source.adapter.type ==
>>                     VIR_STORAGE_POOL_SOURCE_ADAPTER_TYPE_SCSI_HOST) {
>>              if (!ret->source.adapter.data.scsi_host.name &&
>
> ACK, but I'd prefer if the error log gave more identifiable information.
>
> --
> libvir-list mailing list
> [email protected]
> https://www.redhat.com/mailman/listinfo/libvir-list
>

--
libvir-list mailing list
[email protected]
https://www.redhat.com/mailman/listinfo/libvir-list

Reply via email to