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]"