Pay closer attention to the TSIH value that is assigned by the target -
rather than a simple (session id + 1) value, which cycles after 16 sessions
are used, use a central counter, and increment that whenever a TSIH is
apportioned. This fixes some problems for me with multiple targets being
ignored, and only the first target being used. Tested with the Microsoft
initiator, and the embryonic NetBSD initiator.
Use more enumerated types, rather than cpp definitions.
Use enumerated types also in preference to magic numbers.
In the iSCSI test harness, use the -t argument to specify a disk target
exported by the NetBSD iSCSI target. This allows us to test for the
situation outlined above.
Add my copyright to the test harness - there's no Intel code left anymore.
Modify the way initiator login and logout information is presented to the
user. This is only of concern to people who use this with the target in
non-detached (non-daemon) mode.
Get rid of the MODE_SENSE_10 and MODE_SELECT_10 cases in the disk switch,
since they do not return responses in the correct format yet.
+ fix a reported problem with newer versions of FreeBSD which require
a block of data to be read and written, rather than a single byte.
+ add support for Extended Inquiry Data VPD Page (0x86), reported to be
necessary to interoperate with the AIX initiator.
+ add preliminary support for the Write and Verify SCSI operation (0x2e).
correct service - allows us to bind to the correct port, and not the
iSCSI control port.
Update version to 20070815, and re-run autoconf and autoheader.
+ if the attempt to getaddrinfo() on (host,port) fails, try various
combinations of (host,service)
+ clean up lint
+ set sess->d when we get traffic in, rather than just at iSCSI login
implemented for IPv6, but works fine for IPv4)
+ now poll any connections opened in the target. select is used if
poll is not available
+ remove ramdisk type of backing store, since it was never used, and
is of no use for our needs
+ bump version to 20060727
serve simultaneously to DEFAULT_TARGET_MAX_SESSIONS, add a -s argument to
iscsi-target(8) to specify the maximum number of sessions.
Also bump default from 4 to 16.
following Dan Carosone's suggestion of the uint64_t array.
Abstract a bit more from the HTOBE64() macro intrigue, for platforms
like Solaris/x86 which have fun in this part.
Tested only with little-endian initiators for now.
Bump version to 20060526.
initiator (used on Solaris 10 Update 1) - the initiator demands that a
UUID is returned, so give it one.
Add autoconf glue for that, and a compat uuid_create(3) and
uuid_to_string(3).
This still spews a lot of output via the target's syslog, but persevere,
since it does actually make the target work with the Solaris initiator:
solaris10# format
Searching for disks...done
AVAILABLE DISK SELECTIONS:
0. c1d0 <DEFAULT cyl 29728 alt 2 hd 64 sec 63>
/pci@0,0/pci-ide@1f,1/ide@0/cmdk@0,0
1. c2t5d0 <DEFAULT cyl 96 alt 2 hd 64 sec 32>
/iscsi/disk@0000iqn.1994-04.org.netbsd.iscsi-target%3Atarget00001,0
Specify disk (enter its number): ^D
solaris10# df -k /mnt
Filesystem kbytes used avail capacity Mounted on
/dev/dsk/c2t5d0s0 91407 1041 81226 2% /mnt
solaris10# uname -a
SunOS solaris10 5.10 Generic_118844-26 i86pc i386 i86pc
solaris10#
Thanks to lint that caught this on big-endian arches. Little-endian
compiled, but I guess that converting your loop counter into
big-endian inside the loop is not exactly what you want to do.
+ Properly pad the names with spaces (with thanks to Bill Studenmund)
+ Use the official T10 vendor name, "NetBSD".
+ Minor cleanup in the INQUIRY command
+ Rather than just punting on the REPORT LUNs SCSI command, emulate it
properly. This change makes the target work with the Solaris initiator:
AVAILABLE DISK SELECTIONS:
0. c1d0 <DEFAULT cyl 29728 alt 2 hd 64 sec 63>
/pci@0,0/pci-ide@1f,1/ide@0/cmdk@0,0
1. c2t5d0 <DEFAULT cyl 97 alt 2 hd 64 sec 32>
/iscsi/disk@0000iqn.1994-04.org.netbsd.iscsi-target%3Atarget00001,0
Specify disk (enter its number): 1
Add some very crude hacks which allow the iscsi-target to work with IPv6:
Mar 5 23:43:45 sys3 iscsi-target: > Discovery login from iqn.1994-04.org.NetBSD.iscsi-initiator:agc on 7f00:1::1002:cbc
Mar 5 23:43:45 sys3 iscsi-target: < Discovery logout from iqn.1994-04.org.NetBSD.iscsi-initiator:agc on 7f00:1::1002:cbc
Mar 5 23:43:45 sys3 iscsi-target: > Normal login from iqn.1994-04.org.NetBSD.iscsi-initiator:agc on 7f00:1::1002:cbc
Mar 5 23:43:48 sys3 iscsi-target: < Normal logout from iqn.1994-04.org.NetBSD.iscsi-initiator:agc on 7f00:1::1002:cbc
These have still to be cleaned up, but this will happen over the next
few days.
Update the TODO list to reflect the current state.
Add a -V argument to iscsi-target (and iscsi-harness), which will print
the utility name, version number, and destination for all bug reports,
and then exit the utility.
Modify the documentation accordingly.
Re-run autoconf and autoheader to pick up the necessary autoconf glue.
0x1b Load/Unload Sequential
0x4d Log Sense
0x5e (unknown for just now)
0x35 Synchronise cache
as no ops for the present time - reported on current-users by Chavdar
Ivanov as being generated by the Solaris 10 initiator.
file.
The new file specifies whether targets should be presented as readonly
or read-write.
If a target is marked as read-only, don't allow any writes to be made
to it.
Also, add syntax recognition of "any" and "all" in the netmask recognition
code.