[Would like to push to integrate with build 129, currently Tuesday, Dec 1. 
Pre-Thanksgiving review would be welcomed.]
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