Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 09 Sep 2012 18:54:25 +0300
From:      Alexander Motin <mav@FreeBSD.org>
To:        kirk@ba23.org
Cc:        freebsd-stable@freebsd.org
Subject:   Re: FreeBSD 9.1 RC1 and CAM issues with old SCSI drive
Message-ID:  <504CBBB1.20905@FreeBSD.org>
In-Reply-To: <CAN1LDCGW6ebevq2WTKMy%2BafRLH%2BSRNeV8FcifP=p%2B9161udU5w@mail.gmail.com>
References:  <504B2C35.3030800@FreeBSD.org> <CAN1LDCGW6ebevq2WTKMy%2BafRLH%2BSRNeV8FcifP=p%2B9161udU5w@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
On 09.09.2012 16:25, kirk russell wrote:
> On Sat, Sep 8, 2012 at 12:29 PM, Alexander Motin <mav@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



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?504CBBB1.20905>