Sanjay,
Made 2nd round of changes and issued webrev at:
http://cr.opensolaris.org/~wmsch/bug-6590
Previous webrev at:
http://cr.opensolaris.org/~wmsch/bug-6590/oldwebrev2/
Please find my responses below:
Sanjay Nadkarni wrote:
> On 11/25/09 01:51 PM, William Schumann wrote:
>> Sanjay,
>>
>> Sanjay Nadkarni wrote:
>>> ...
>>>>>
>>>>> auto_parse.c:
>>>>> 193 and others:
>>>>> if p is NULL, wouldn't this be an error. If so it will not
>>>>> be caught. Similar issues with other parsed values.
>>>> Errors could occur in auto_parse_manifest.c during tag parsing that
>>>> would be ignored. However, these errors would be very unlikely,
>>>> since they would involve a basic breakdown in the embedded Python
>>>> interpreter, which has already been invoked to validate the
>>>> manifest. Since fixing this would involve many changes in three
>>>> different modules, and since this was not introduced by iSCSI, I
>>>> would prefer to file a bug on this and handle it later at a more
>>>> appropriate priority.
>>>
>>> Sorry for not being clear. There are 2 issues here:
>>>
>>> 1. If you truly believe that p != NULL then why not change them to
>>> an assert.
>> p == NULL when there is no value for the tag in the manifest (as well
>> as the Python interpreter errors describe just above). Remember that
>> assert() only has an effect in a debug build. The Python errors in
>> auto_parse_manifest.c could have assert()s so that these failures
>> would cause assertion failures in a debug build. Would that suffice?
> Yup that would ok.
Added asserts for Python failures.
>>> 2. Sorry for not being clear. I was really asking where is the
>>> sematic parsing occurring ?
>> The only semantic parsing with these new values is in
>> td_iscsi.c:parse_lun_num(), and even that doesn't report parsing
>> problems explicitly. Parameters that could benefit from some
>> semantic validation are: IP address, LUN. port could be checked for
>> absurd values.
> Sure..but I what I was getting at was dependency between the various
> elements that are defined in the .rng file. They are marked as
> optional are they really optional ? The xor test indicates that
> there is a dependency/requirement or am I mistaken ?
Not at all.
I addressed this in detail in my response to Ethan. To summarize,
validation failures currently produce incorrect, misleading, and
confusing console output and useless log file output; however, having
the validation against the schema would be useful since it is done on
the AI server in installadm (when the manifest is submitted), so I
decided to enforce the dependencies via the RNG schema rather than in
the AI code, and improve the output of the validator in the future.
Thank you,
William
>
>
>>>
>>>>>
>>>>>
>>>>> auto_td.c:
>>>>> 482: Just to be sure..when "if" statement fails,
>>>>> diskiscsiname and diskiscsiip are both either
>>>>> defined or undefined. A comment to that effect would be useful.
>>>>> 492: I would have thought that rootpath[MAXNAMELEN] would
>>>>> be sufficient (i.e. 256) instead of MAXPATHLEN
>>>>> which is 1024.
>>>> According to RFC 3720, the iSCSI name itself can be up to 223
>>>> bytes. Add to that the maximum length of the IP address, port
>>>> number, protocol, and LUN, plus the "iscsi:" and separator
>>>> characters and this is over 256 bytes.
>>> Okay
>>>>>
>>>>> 539: strncmp(rootpath, "iscsi:", strlen("iscsi:")) would
>>>>> be preferable.
>>>>>
>>> ???
>> What's the problem here? The requested change on 539 was made in the
>> source and appears in the webrev.
> I believe, I email crossed. Ignore.
>>
>> Thank you,
>> William
>