Requesting code review for iSCSI boot support in Caiman

The first delivery of iSCSI support is for the Caiman Automated 
Installer.  Only static configuration is supported by this code. 

Before Target Discovery, the AI manifest is read.  If iSCSI target 
parameters are specified, they will be taken from the manifest.
If not, dhcpinfo(1) is used to get the DHCP-supplied parameter 
Rootpath.  If Rootpath specifies iSCSI, the iSCSI target parameters are 
taken from it.

If the boot target is successfully mounted, it will be chosen as the 
install disk.  Only x86 support has been tested.  The mounting of the 
boot target is a new function of Target Discovery td_search_target() - 
the target is searched for and mounted, given input through an nvlist - 
in this case, the target is an iSCSI target.  It is done in a 
generalized way so that other targets may be mounted in the future.

After mounting the iSCSI target, the device name is automatically 
selected as the install disk target candidate.  It must then pass any 
other criteria specified in the manifest to be the final target.

http://defect.opensolaris.org/bz/show_bug.cgi?id=6590
http://cr.opensolaris.org/~wmsch/bug-6590/
Project page: http://hub.opensolaris.org/bin/view/Project+caiman/iSCSI+Boot

Enables nwam service in repository database (instead of doing it through 
commands in /var/svc/profile/upgrade).
Target Discovery enhanced to discover with user-specified input (here, 
iSCSI target parameters).  New code module: 
td_iscsi.c:td_target_search(attribute list)

Unit testing:
- correct configuration
-- varied use of optional parameters to check defaulting

- incorrect configuration - should fail install
-- missing required parameters
-- failure to mount with specified parameters should fail install

- repeat install manually running auto-install
- regression test - still installs to local disk

Known problems:
- NWAM phase 0 -  DNS config not correct on initial reboot -  can be 
corrected manually, but easier just to reboot.
- one Ultra 20 observed to hang system completely when idle if power 
management is enabled

Kludge:
- Passing parameters from AI to ICT very clunky and will be refactored 
soon, so employed interim technique: create a marker file, 
/tmp/.iccsi_boot, which will be present only for iSCSI boot cases.

CHAP support is only partly coded here.  Will be completed soon.

Please include Bing Zhao, since he is responsible for libima-related 
coding.  IMA stands for iSCSI management API.

Also, I noticed that Bing did a direct struct-struct assignment.  I 
haven't been using that feature, but it is supported by ANSI C, Sun 
Studio, and gcc.
td_iscsi.c:
 79         *oid = lhbaList->oids[0];

William

Reply via email to