On 09.09.2012 16:25, kirk russell wrote:
On Sat, Sep 8, 2012 at 12:29 PM, Alexander Motin <[email protected]> wrote:
Hi.

It seems like both of your problems have the same cause: device report wrong
size of INQUIRY data, that causes failure on attempt to fetch it. With
FreeBSD 9.0 it caused domain validation failures and so reduced transfer
rate, on 9.1 it also causes detection failure. I am not sure why detection
worked on 9.0, it needs some deeper code comparison, but I think it is
mostly device problem.

Could you send me output of such commands from FreeBSD 9.0:
camcontrol cmd da0 -vEc "12 00 00 00 24 00" -i 36 - | hd
camcontrol cmd da0 -vEc "12 00 00 00 fe 00" -i 254 - | hd
camcontrol cmd da0 -vEc "12 00 00 01 00 00" -i 256 - | hd

--
Alexander Motin

This is running 9.0-RELEASE.

# camcontrol cmd da0 -vEc "12 00 00 00 24 00" -i 36 - | hd
00000000  00 00 02 02 fa 00 00 3e  43 4f 4d 50 41 51 50 43  |.......>COMPAQPC|
00000010  57 44 45 39 31 30 30 57  20 20 20 20 20 20 20 20  |WDE9100W        |
00000020  31 2e 30 31                                       |1.01|
00000024
# camcontrol cmd da0 -vEc "12 00 00 00 fe 00" -i 254 - | hd
00000000  00 00 02 02 fa 00 00 3e  43 4f 4d 50 41 51 50 43  |.......>COMPAQPC|
00000010  57 44 45 39 31 30 30 57  20 20 20 20 20 20 20 20  |WDE9100W        |
00000020  31 2e 30 31 32 33 30 31  57 53 37 30 32 30 33 37  |1.012301WS702037|
00000030  32 34 39 33 00 00 00 00  20 20 20 20 20 20 20 20  |2493....        |
00000040  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
*
00000060  57 44 45 39 31 30 30 2d  36 30 30 35 44 30 20 20  |WDE9100-6005D0  |
00000070  34 30 36 31 30 30 31 31  39 31 30 30 32 43 30 20  |4061001191002C0 |
00000080  32 34 30 38 00 00 00 00  00 00 00 00 00 00 00 00  |2408............|
00000090  00 00 00 00 4e 32 30 35  30 30 39 39 30 32 35 35  |....N20500990255|
000000a0  33 20 20 20 50 20 30 30  00 00 00 00 00 00 42 41  |3   P 00......BA|
000000b0  43 43 42 45 4b 43 31 39  39 38 30 38 32 38 57 53  |CCBEKC19980828WS|
000000c0  36 30 44 20 04 03 00 04  02 01 00 00 00 00 00 00  |60D ............|
000000d0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
000000f0
# camcontrol cmd da0 -vEc "12 00 00 01 00 00" -i 256 - | hd
(pass1:ahc0:0:0:0): INQUIRY. CDB: 12 0 0 1 0 0
(pass1:ahc0:0:0:0): CAM status: SCSI Status Error
(pass1:ahc0:0:0:0): SCSI status: Check Condition
(pass1:ahc0:0:0:0): SCSI sense: ILLEGAL REQUEST asc:24,0 (Invalid field in CDB)
(pass1:ahc0:0:0:0): Command Specific Info: 0xffffffff
(pass1:ahc0:0:0:0): Command byte 3 is invalid
camcontrol: error sending command
(pass1:ahc0:0:0:0): INQUIRY. CDB: 12 0 0 1 0 0
(pass1:ahc0:0:0:0): CAM status: SCSI Status Error
(pass1:ahc0:0:0:0): SCSI status: Check Condition
(pass1:ahc0:0:0:0): SCSI sense: ILLEGAL REQUEST asc:24,0 (Invalid field in CDB)
(pass1:ahc0:0:0:0): Command Specific Info: 0xffffffff
(pass1:ahc0:0:0:0): Command byte 3 is invalid

It seems that problem can be in our SCSI code that rounds inquiry data size up to even. Please try to comment out line
        inquiry_len = roundup2(inquiry_len, 2);
in sys/cam/scsi/scsi_xpt.c and rebuild the kernel. It should probably fix both device detection and transfer speed.

--
Alexander Motin
_______________________________________________
[email protected] mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-stable
To unsubscribe, send any mail to "[email protected]"

Reply via email to