Joe,
Upon retesting after merging, I hit a bug in which max_size for 1 partition + 
max_size for slice 3 for an unformatted disk produces 
a VTOC that is slightly too long.
Please don't review until I fix this.
William

Joe,
RE: code walk through request

ai_manifest.rng:  Defines grammar and elements for RNG schema, which are
used for defining and validating XML.
partition_size changed from numeric to text to accommodate keywords.

auto_parse.c:  further parsing and filing of manifest information.  Uses
ManifestServ to retrieve values.
I removed a lot of identical functions that could be done more concisely
and directly inline.
Other changes handle validating the partition/slice_size text fields
that were once numeric.  "max_size" is the only recognized keyword, and
signals AI to use the largest free region in the partition or slice -
done by passing a size of zero to om_create_partition() or
om_create_slice().  Other code does numeric validation.

auto_install.c, auto_install.h: entry point for AI
perform_slim_install.c:
orchestrator_api.c:
Added check for XML validation failures for partitions and slices.
Added command line options for testing: -i - breakpoint before TI, -I
breakpoint after TI.
Added enum to specify where to breakpoint for testing

disk_slices.c:  manage slices
1st change: There is code to duplicate disk target info that is almost
identical for partitions and slices, I noticed a discrepancy: the line
to copy disk size in sectors was missing from the partition code, which
had been causing anomalies elsewhere.  I combined the common code into a
function that went into disk_target.c.
last change: fixed a different bug here (it seemed most expedient -
primarily for testing):
4396 AI - last custom VTOC slice on unformatted disk is 3 cylinders too long
http://defect.opensolaris.org/bz/show_bug.cgi?id=4396

disk_parts.c:  manages partitioning
disk_target.c:  disk target-specific code
(see disk_slices.c, 1st change)

om_misc.c:
Added function to write the same message to the log and to a FILE *
object (which is stderr in perform_slim_install.c)

I had to do a hand merge to make this current.  Reissued webrev, adding
4396.
Let me know if you have questions.
Thank you,
William

Joseph J VLcek wrote:
> William Schumann wrote:
>> Currently in the AI manifest, if zero is specified as a requested 
>> size for partitions or slices, the maximum available space will be 
>> allocated.  This is non-intuitive, and for clarity, a keyword 
>> "max_size" shall be used for RNG elements "slice_size" or 
>> "partition_size".
>>
>> http://cr.opensolaris.org/~wmsch/bug-5653/
>> http://defect.opensolaris.org/bz/show_bug.cgi?id=5653
>>
>> The sizes in the RNG file had to be changed from numeric only to text.
>>
>> Other changes include:
>> - additional manifest parsing problems logged and manifest parsing 
>> failure path added
>> - removing unnecessary functions to fetch particular manifest 
>> elements replacing it with a generic routine (auto_parse.c)
>> - logging routine added to log and print message to file
>> - adding command line options for breakpoints for testing
>> - moved common code to disk_target.c from disk_parts.c and 
>> disk_slices.c, fixing bug with missing disk sector size
>>
>> Unit testing for slice/partition for x86 + slice for SPARC:
>> - invalid values for size (alpha, out of range)
>> - varying existing partition layouts testing maximum size allocation 
>> algorithm
>> - slice editing, partition editing, both
>> - testing breakpoint code
>> _______________________________________________
>> caiman-discuss mailing list
>> caiman-discuss at opensolaris.org
>> http://mail.opensolaris.org/mailman/listinfo/caiman-discuss
>
> William,
>
> I realize this is not the norm but your changes for 5653 are substantial.
>
> Would you mind doing a code walk through with me?
>
> In the mean time I'll start looking at it.
>
> Joe


Reply via email to