Commit Graph

41 Commits

Author SHA1 Message Date
agc 72a3c3e7b9 Add support for Vital Product Data 0x80, Unit Serial Number, reported to be
used by the beta FreeBSD initiator by Paul Dekkers.
2006-08-03 20:49:11 +00:00
agc 66644e0749 + add support for IPv6 in the target (CIDR scoping has still to be
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
2006-08-03 20:21:59 +00:00
agc 2b1d5a0345 :g/%i/s//%d/gc
Also make a first stab at implementing persistent reserve in SCSI command.
2006-05-31 19:53:13 +00:00
agc c52b27c275 Bump version number for the portability fix, and the dynamic number of
sessions.
2006-05-27 21:29:32 +00:00
agc 36fad19155 Rather than hardcoding the maximum number of sessions that a target can
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.
2006-05-27 21:21:04 +00:00
agc 2fa516b2eb Rewrite the way report_luns() works, after suspicion by Matt Green, and
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.
2006-05-26 16:34:43 +00:00
he c6974f26a9 Use the value-returning variants of the 64-bit endian macros instead
of the argument-tweaking variants (e.g. htobe64 instead of HTOBE64).
2006-05-22 20:48:08 +00:00
agc e32a776a5a Adjust the data VPD returns, to work around a problem in the Cisco
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#
2006-05-21 09:26:37 +00:00
uwe ee952d9fc0 Use be64toh/htobe64 instead of upper-case versions.
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.
2006-04-30 01:07:59 +00:00
agc 84fba20a22 Use the correct opcode for the WRITE6 SCSI command 2006-04-26 20:29:56 +00:00
agc 000a68021a + Some minor formatting cleanup in the header files.
+ 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
2006-04-24 21:59:03 +00:00
agc 339a11eb23 Bump version to 20060417 for the Mac OS X build fixes (thanks, Jason) 2006-04-18 06:52:59 +00:00
thorpej 0c7787e9ae Let MD5Update() take a void *, rather than a uint8_t *. Gets rid of a
GCC 4 warning.
2006-04-17 16:49:16 +00:00
thorpej 01de58d459 Test HAVE_STDINT_H and bring in <stdint.h> if defined. 2006-04-17 16:45:02 +00:00
thorpej 57de6c70c3 Pull in config.h to get the definition of HAVE_STDINT_H 2006-04-17 16:44:42 +00:00
thorpej 7dd6393f48 Check for <libkern/OSByteOrder.h>. If it exists, use it to get the
OSSwapBigToHostInt64() definition for HTOBE64().  This now builds on
Mac OS X 10.4.6.
2006-04-17 16:30:00 +00:00
agc f27a3c2c6b Commit regenerated config.h so that the correct version strings are picked
up for NetBSD.
2006-04-16 17:19:50 +00:00
agc cf0dd67053 Provide a bit more information in the error and warning routines - needed
since variadic macros were removed.
2006-03-31 23:22:24 +00:00
agc 2171876d1d More portability fixes, mainly for Solaris 9. 2006-03-28 20:03:30 +00:00
agc f02decf866 Add changes to make the NetBSD iSCSI target compile and run on Solaris 9
Ultrasparc.
2006-03-27 22:26:28 +00:00
agc 6e1f35f92e minor cleanup in preparation for porting the NetBSD iSCSI target to Solaris 9. 2006-03-26 23:34:06 +00:00
agc e1d9f9cea5 First stab at implementing INQUIRY for Vital Product Data, aka Page 83
information in the Solaris initiator, with information taken from
SPC3, T10/1416-D Revision 23, from www.t10.org.

This is untested, work-in-progress.
2006-03-23 00:01:48 +00:00
agc 86caa230d8 Actually do something with the SYNC_CACHE command - use fsync_range(2) if
it's available, falling back to fsync(2) if it's not. Add the necessary
glue to the autoconf scripts.
2006-03-21 22:56:55 +00:00
agc cbf5d4f8f5 Abstract out some common code, and place it in the utilities source.
Get rid of some #ifdef __KERNEL__ abstractions - they're not needed.
2006-03-21 21:03:14 +00:00
agc a055fd96f7 Incorporate changes from F. Senault, modified by myself to use
autoconf glue, to make the NetBSD iSCSI target build and run on
FreeBSD.
2006-03-20 20:45:07 +00:00
agc 2010c5954a Clean up, mostly to autoconf glue, to check whether syslog(3) exists or not. 2006-03-20 20:25:42 +00:00
agc a4c7ca1aeb Get rid of c99isms in the form of variable number of args to CPP macros.
This should slim down the resulting binaries a fair bit as well.
2006-03-12 18:47:27 +00:00
agc d4397af4d8 One more off the TODO list, although I hadn't realised it was going to be
as painful as it was.

Teach GNU autoconf to recognise socklen_t, and use it in the code.
2006-03-06 20:52:32 +00:00
agc 32306cea7e I have a nasty feeling it's time to sell all my guitars:
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.
2006-03-05 23:50:46 +00:00
agc 7717b41470 Include version number, passed down from GNU autoconf.
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.
2006-03-04 21:56:11 +00:00
agc b95774e6d4 Implement SCSI commands:
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.
2006-02-24 20:47:30 +00:00
he 127058acaa Include <sys/param.h> explicitly relatively early, so that we pick
up the definition of MAX earlier, and avoid a redefinition which
GCC 2 isn't very fond of.  Fixes build problem for vax.
2006-02-22 08:56:46 +00:00
agc f06c81ed28 Further cleanup.
Add an initiator_discover() function, and start to break up the monolithic
discovery function that's currently used.
2006-02-20 08:59:07 +00:00
agc 56abe96063 By popular request, modify the IQN to:
"iqn.1994-04.org.netbsd.iscsi-target"
2006-02-16 23:16:05 +00:00
agc ec095879d4 Introduce a backwards compatible change to the targets configuration
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.
2006-02-16 19:19:38 +00:00
agc c963d486fc Present multiple targets properly 2006-02-14 20:08:37 +00:00
agc a31b31cf51 keep a reference to the device target information in the globals structure 2006-02-12 15:34:29 +00:00
agc e48ae9ed1d use a proper prototype for allow_netmask 2006-02-12 15:33:26 +00:00
agc 0a7d1d9211 Break out the files relating to storage extents, devices and targets into
a separate source file.
2006-02-09 23:08:31 +00:00
mrg 5f90d3d8b1 - use <inttypes.h> and PRIu64 in many places.
- don't try to use the return value of NTOHL().

fixes sparc64 build problems.
2006-02-09 08:46:43 +00:00
agc 33645f4ad2 Import the distribution files for the iSCSI target, developed from the
original Intel code (BSD-licensed) in othersrc, by myself.

This provides an iSCSI target implementation in userland, as well as a
test harness which also runs in userland.

The iSCSI target has been tested with version 1.06 of the Microsoft
initiator, as well as with its own test harness.
2006-02-08 18:56:14 +00:00