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