Opened 11 years ago

Closed 10 years ago

#5319 closed enhancement (fixed)

Add iSCSI boot support

Reported by: andreasf Owned by: andreasf
Priority: normal Milestone: R1
Component: System/Boot Loader Version: R1/Development
Keywords: Cc:
Blocked By: #5240 Blocking:
Platform: All


iSCSI is a TCP-based protocol for accessing Network Attached Storage.

On a Solaris host for instance, a disk image can be set up as iSCSI target by a one-liner:

iscsitadm create target --backing-store path/to/generated/haiku.image haiku-ppc

Discovery sessions allow to list all targets served by a host, such as the TFTP server.

In normal sessions, regular SCSI commands are used to transfer data.

Attachments (2)

ip_parse_address.diff (2.9 KB ) - added by andreasf 11 years ago.
iscsi-draft-01.diff (29.3 KB ) - added by andreasf 11 years ago.
draft patch

Download all attachments as: .zip

Change History (7)

by andreasf, 11 years ago

Attachment: ip_parse_address.diff added


comment:1 by andreasf, 11 years ago

The attached patch moves my parse_ip_address function around, so that it can be used for iSCSI, beyond Open Firmware.

Please apply this part.

by andreasf, 11 years ago

Attachment: iscsi-draft-01.diff added

draft patch

comment:2 by andreasf, 11 years ago

Code is Big Endian only for now.

Discovery is implemented, attempting to connect to each IPv4 TargetAddress, ignoring setups with multiple Target Portal Groups for now.

Basic session login and logout is implemented. The volume size is apparently read correctly.

Reading actual data is not yet working. There is an unexpected (stray?) SCSI response of type CHECK CONDITION.

Adding the discovered disk Node to the NodeList didn't work from inside the iSCSI code, so I needed to add a callback for it to link. This may be connected to _BOOT_MODE not being defined for the boot_net library, leading to an undefined reference dprintf_no_syslog.

comment:3 by axeld, 11 years ago

ip_parse_address() patch applied in hrev35522, thanks, and sorry for the long delay!

comment:4 by andreasf, 11 years ago

Owner: changed from axeld to andreasf
Status: newassigned

comment:5 by andreasf, 10 years ago

Resolution: fixed
Status: assignedclosed

Applied slightly differently in hrev38528, hrev38535 and hrev38536.

Note: See TracTickets for help on using tickets.