Commit Graph

879 Commits

Author SHA1 Message Date
Ronnie Sahlberg
0a026e2da7 AROS: We need emulation of readv/writev on aros 2013-04-22 18:50:05 -07:00
Ronnie Sahlberg
322be0cf24 add missing version descriptor 2013-04-22 18:34:02 -07:00
Ronnie Sahlberg
555906e76e Revert "Add SSC to the version descriptors."
This reverts commit 45f5fc2105.

Conflicts:

	include/scsi-lowlevel.h
2013-04-22 18:32:09 -07:00
Ronnie Sahlberg
e640fa3cde missing , broke compile 2013-04-22 18:28:20 -07:00
Ronnie Sahlberg
45f5fc2105 Add SSC to the version descriptors.
I actually have a usb-stick that claims it supports SSC. I stongly doubt it.
2013-04-22 17:44:13 -07:00
Ronnie Sahlberg
284514b14e fix typo 2013-04-22 17:38:10 -07:00
Ronnie Sahlberg
79f54c5e06 TESTS update all read16 tests to fail/skip on illegal opcode depending on whether the device claims support for it or not (mandatory in sbc-3, optional prior) 2013-04-22 17:31:50 -07:00
Ronnie Sahlberg
77ff1b1808 TESTS: make the "is readcapacity16 supported on this device" tests cleaner 2013-04-22 17:11:38 -07:00
Ronnie Sahlberg
af6d1c9c13 Add a test for mandatory opcodes for SBC devices.
Note that Read16/Readcapacity16 are mandatory on SBC3 but not prior.
Not all mandatory opcodes are tested for yet.
2013-04-21 14:50:41 -07:00
Ronnie Sahlberg
91a98d6b92 Add handling of inquiry version descriptors 2013-04-21 14:04:30 -07:00
Ronnie Sahlberg
b3ca40efbe Get rid of the popt dependency 2013-04-21 10:25:30 -07:00
Ronnie Sahlberg
a048079c90 covnert the old test suite grom popt to getopt_long 2013-04-21 10:19:40 -07:00
Ronnie Sahlberg
ecfe404316 iscsi-support.c does not need popt.h 2013-04-21 10:03:34 -07:00
Ronnie Sahlberg
1c5d132ed0 convert iscsi-dd to use getopt_long() 2013-04-21 10:02:05 -07:00
Ronnie Sahlberg
f5d25c0157 ISCSI-READCAPACITY16 convert to getopt_long() 2013-04-21 09:58:15 -07:00
Ronnie Sahlberg
c3886cf9c4 ISCSI-INQ: convert to getopt_long instead of popt 2013-04-21 09:53:12 -07:00
Ronnie Sahlberg
c0d1c122c3 ISCSI-LS : Change from popt to the slightly less portable getopt_long
win32 and amiga/aros does not have getopt_long() so we will need a
replacement for the platforms where getopt_long() is missing.
2013-04-21 09:44:23 -07:00
Ronnie Sahlberg
622b38d679 Add support for AROS 2013-04-18 19:45:17 -07:00
Ronnie Sahlberg
402653b9f3 portability updates
add check if ipv6/sockaddr_in6 is availavble or not
add check for poll.h and only include when available
add includes for AROS
2013-04-18 19:43:36 -07:00
Ronnie Sahlberg
fbf58ead9f TESTS: When task management functions fail, print the reason why it failed. 2013-03-27 17:25:47 -07:00
Ronnie Sahlberg
aac7ed29b8 SYNC Task mgmt functions. Return !0 status if the command completed successfully
but the target responded with non-zero response code.
2013-03-26 17:38:47 -07:00
Ronnie Sahlberg
d6f4c4d259 TESTS update reserve6 tests 2013-03-25 17:49:11 -07:00
Ronnie Sahlberg
2873b18bb7 TESTS: Add tests to verify that RELEASE6 is dropped on target/lun reset 2013-03-25 17:42:24 -07:00
Ronnie Sahlberg
1f54a3068c TESTS: Add tests for residuals for WRITEVERIFY10/12/16 2013-03-24 09:29:03 -07:00
Ronnie Sahlberg
641cc997c1 TESTS: Improve WRITE* residual tests and also check that we dont write too much if iSCSI EDTL < SCSI TL 2013-03-24 09:10:01 -07:00
Ronnie Sahlberg
e1f15c8464 TESTS: Add tests that WRITE10/12/16 handle residuals correctly
Also test that IF the iSCSI layer provides 2 blocks of DATA-OUT but
the SCSI WRITE* command only covers one single block,
then only the first block will be modified but not the second block.
2013-03-24 08:56:23 -07:00
Ronnie Sahlberg
7cfcf32591 TESTS: Add tests for READ12/16 residuals 2013-03-23 15:50:57 -07:00
Ronnie Sahlberg
a95a83764a TESTS: fixup a log message to be nore accurate 2013-03-23 15:32:05 -07:00
Ronnie Sahlberg
5b29ad2ddf TESTS: Add test for READ10 to check that over/underflow residuals are generated correctly. 2013-03-23 12:44:55 -07:00
Ronnie Sahlberg
808eed9680 Make task->residual a size_t instead of an int
Update and improve the log messages for failures for the read10 invalid test
2013-03-23 11:23:02 -07:00
Ronnie Sahlberg
2d10d0a2d8 TESTS: Update the "invalid read10" test with better description and logging of what exactly it tests 2013-03-23 10:35:39 -07:00
Ronnie Sahlberg
3e358bb192 TESTS: in RESERVE6 test, allow slow targets 3 seconds to notice the nexus loss and drop the reservation 2013-03-23 10:13:03 -07:00
Lee Duncan
510883f28f fix reregister to check for resvn conflict
According to SPC, an attempt to register on
a registeried I_T Nexus with the incorrect
reservation key should produce a reservation
conflict.
2013-03-22 17:57:51 -07:00
Lee Duncan
cfc83f0b4f Reservation type not needed to register. 2013-03-22 17:56:59 -07:00
Ronnie Sahlberg
fd77387c66 TESTS: Add tests to verify a RESERVE6 is dropped on logout and it-nexus loss 2013-03-21 19:55:24 -07:00
Ronnie Sahlberg
6c0fd5cfa3 TESTS: Add RESERVE6/RELEASE6 tests 2013-03-21 19:41:32 -07:00
Ronnie Sahlberg
d5c5fb83af We should still be able to login even if the device is reserved.
TESTUNITREADY returning reservation conflict is no reason to fail the login
2013-03-21 19:26:55 -07:00
Ronnie Sahlberg
6a3888e39e TESTS: Old and new testsuite tested slightly different things for 0block tests
Change all tests in the old testsuite to check 0block tests 2 blocks past the end of the device, just like the new testsuite.

These tests check that we get an error if we do a 0-block read/write etc beyond the end of the device.

In the SBC standard, the only thing that discusses LBA_OUT_OF_RANGE is wordings
such as this :
	If the LBA plus the transfer length exceeds the capacity of the medium,
	then the device server shall terminate the command with CHECK CONDITION
	status with the sense key set to ILLEGAL REQUEST and the additional
	sense code set to LOGICAL BLOCK ADDRESS OUT OF RANGE.

This is very clear for when transfer length is > 0,  but what when
transfer length is == 0?

Assume we have a device that is 0x31fff in size.
With this wording, if we read 1 block at LBA : 0x31fff  we end up at 0x32000
and this is at the end, but not beyond the end.
We are reading/accessing the last block at 0x31fff and we stop at 0x32000.

Similarly, if we are reading 1 block, starting at 0x32000 and reading to 0x32001 which would be LBA_OUT_OF_RANGE since we are accessing beyond the end of the device.

The question now is what happens if we try to read 0-blocks  just at the edge at the end of the device.
I.e. What is we try to read 0 blocks at LBA:0x32000 ?

Looking at the standard, the wordings say that this should be fine.
Because the SBC standard only says that we should check LBA+transfer length.
Thus since 0x31fff + 1 block   is exactly the same as 0x32000 + 0 blocks
thus a device SHOULD allow reading of 0 blocks just at the end.

This is the conclusion from reading SBC by the letter. However It might be unreasonable to do so and it might be wiser to just stay away from this ambigous area of SBC.

Following the SBC standard by the letter,   the new test suite was wrong since it should have flagged this as a failure. But it did checks on one block beyond the blobk at the end of the device.  It checked that we would fail  for 0x32001 in the example above.

Strictly, I should have fixed the new test to check 0x32000   but I think it might be unreasonably to enforce something here for this ambigous area of "what happens when accessing 0 blocks just at the edge of the device".

So instead I have changed the OLD tests so that they now check one block further on. In the example above it means they too now check 0x32001  instead of 0x32000.
Technically speaking this is wrong,  but this is the imho reasonable thing to do.
2013-03-19 18:04:24 -07:00
Ronnie Sahlberg
f11749ca52 TEST: Add test that all mandatoryb VPD pages are available on SBC devices 2013-03-12 19:26:39 -07:00
Ronnie Sahlberg
ec70169380 TEST: Add test for the supported VPD pages and that we can read them 2013-03-12 18:41:57 -07:00
Ronnie Sahlberg
e84b71af15 TEST: Add test for EVPD bit for INQUIRY commands 2013-03-12 18:29:24 -07:00
Ronnie Sahlberg
b10641566e TESTS: Add tests for INQUIRY allocation length.
Add special test that for SPC3+ devices we do have 16 bits of alloc length available.
2013-03-11 18:32:29 -07:00
Ronnie Sahlberg
f8901ea18e Merge pull request #61 from plieven/ascq
Add ASCQ codes related to thin-provisioning
2013-03-11 06:46:20 -07:00
Ronnie Sahlberg
f2e244f10c Merge pull request #60 from plieven/defer_reconnect
Fixes for iscsi_set_reconnect_max_retries()
2013-03-11 06:45:29 -07:00
Peter Lieven
80ef1807ef Add ASCQ codes related to thin-provisioning
Signed-off-by: Peter Lieven <pl@kamp.de>
2013-03-11 12:13:42 +01:00
Peter Lieven
5a94d5d73a fix leak of iscsi_context in iscsi_reconnect
in case the maximum number of reconnects is limited with
iscsi_set_reconnect_max_retries() the an iscsi_context
is leaked if the limit is exhausted.

Signed-off-by: Peter Lieven <pl@kamp.de>
2013-03-11 08:51:18 +01:00
Peter Lieven
327b51ed5b do not reconnect if reconnect is already defered
If the amount of reconnects is limited with iscsi_set_reconnect_max_retries()
it might happen that iscsi_reconnect is called while there is already a deferred
reconnect.

Signed-off-by: Peter Lieven <pl@kamp.de>
2013-03-11 08:44:11 +01:00
Ronnie Sahlberg
0bc415761a TESTS: Add test for standard inquiry page 2013-03-10 19:02:45 -07:00
Ronnie Sahlberg
3e28133a9a Add unmarshallers for READ*/VERIFY*/WRITE* cdb 2013-03-10 09:19:23 -07:00
Ronnie Sahlberg
ad0b14e833 TEST: Add a test to verify PREVENT REMOVALs are seen across all nexuses 2013-03-03 13:44:16 -08:00