FreeBSD 9.1 RC1 and CAM issues with old SCSI drive
Alexander Motin
mav at FreeBSD.org
Sun Sep 9 15:54:30 UTC 2012
On 09.09.2012 16:25, kirk russell wrote:
> On Sat, Sep 8, 2012 at 12:29 PM, Alexander Motin <mav at freebsd.org> 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
More information about the freebsd-stable
mailing list