It looks like SCST needs some work here,
It is probably best if we just do a couple of tests that fail at a
time so that we can take bite sized chunks at this.
The first bunch of failures you get are for the OrWrite tests.
OrWrite is an optional opcode in SBC and often only implemented in
higher end arrays but seldom in user grade disks or non-enterprise
gear.
You also have this in your email :
> scst: ***ERROR***: Refusing unknown opcode 8b
Opcode 0x8b IS OrWrite so I assume what happens here is that SCST just
does not implement this opcode but it fails to respond correctly back
to the test tool/initiator.
I patched STGT so that it no longer supports OrWrite and when running
one of the tests without OrWrite support, this is what is supposed to
happen :
$ ./bin/iscsi-test-cu iscsi://
127.0.0.1/iqn.ronnie.test/1 --dataloss
--test SCSI.OrWrite.Simple -V
CUnit - A Unit testing framework for C - Version 2.1-0
http://cunit.sourceforge.net/
Suite: OrWrite
Test: Simple ...
Test ORWRITE of 1-256 blocks at the start of the LUN
Send ORWRITE LBA:0 blocks:1 wrprotect:0 dpo:0 fua:0 fua_nv:0 group:0
[SKIPPED] ORWRITE is not implemented.
[SKIPPED] ORWRITE is not implemented.
passed
--Run Summary: Type Total Ran Passed Failed
suites 1 1 n/a 0
tests 1 1 1 0
asserts 1 1 1 0
Tests completed with return value: 0
I.e. the test will still pass even if the target does not support this
opcode, it will pass as skipped.
But this depends on the target responding correctly and it does not
look like SCST does.
IF SCST can not handle an opcode or if it is missing from SCST it
should respond with
CHECK_CONDITION
ILLEGAL_REQUEST
INVALID_OPERATION_CODE
I cant tell what SCST returns here but you could just run this test
and capture a network trace in wireshark and see what happens.
So this is something you should fix in SCST.
The prefetch10/16 flags tests test that a target can handle the IMMED
bit and the GROUP field in the cdb.
Here it looks like SCST fails the opcode if any of these are set.
Again, you probably want to look at a network trace and see what SCST
responds with and perhaps
check what does SCST do with the IMMED and GROUP flags.
Test: testRead10ReadProtect ... FAILED
This one sends rdprotect != 0 in the CDB. If the medium is not
formatted with protectiuon information then the target must fail these
commands. I bet SCST does not check the rdprotect field.
There are similar tests for all other READ* commands, as well as
WRITE* VERIFY* etc.
If it is wrong in Read10 it is probably wrong in all of them.
Test: testRead10Invalid ... FAILED
This probably means you dont return residuals correctly for
overflow/underflow. This is common.
But you need a network trace to find out what is wrong.
Start with these ones and see if they can be fixed.
Since there are so many failures you should probably just run a single
test at a time.
Add the -V flag when you run the test. It will make it print a lot
more verbose information
and will often give hints on what is wrong with the target.
regards
ronnie sahlberg
> --
> You received this message because you are subscribed to the Google Groups
> "libiscsi" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to
libiscsi+u...@googlegroups.com.
> For more options, visit
https://groups.google.com/groups/opt_out.