Hi, I booted FreeBSD 9.1-RC1 on one of my older scratch i386 PCs and noticed this regression -- the SCSI disk is unusable: FreeBSD 9.1-RC1 #0: Tue Aug 14 03:56:40 UTC 2012 root@obrian.cse.buffalo.edu:/usr/obj/usr/src/sys/GENERIC i386 ahc0: <Adaptec 2940 Ultra SCSI adapter> port 0x6400-0x64ff mem 0xd3000000-0xd3000fff irq 3 at device 13.0 on pci0 aic7880: Ultra Wide Channel A, SCSI Id=7, 16/253 SCBs (probe0:ahc0:0:0:0): INQUIRY. CDB: 12 0 0 1 0 0 (probe0:ahc0:0:0:0): CAM status: SCSI Status Error (probe0:ahc0:0:0:0): SCSI status: Check Condition (probe0:ahc0:0:0:0): SCSI sense: ILLEGAL REQUEST asc:24,0 (Invalid field in CDB) (probe0:ahc0:0:0:0): Command Specific Info: 0xffffffff (probe0:ahc0:0:0:0): Command byte 3 is invalid (probe0:ahc0:0:0:0): Error 22, Unretryable error [da0 never appears] This drive will be found with 9.0: FreeBSD 9.0-RELEASE #0: Tue Jan 3 07:15:25 UTC 2012 root@obrian.cse.buffalo.edu:/usr/obj/usr/src/sys/GENERIC i386 ahc0: <Adaptec 2940 Ultra SCSI adapter> port 0x6400-0x64ff mem 0xd3000000-0xd3000fff irq 3 at device 13.0 on pci0 aic7880: Ultra Wide Channel A, SCSI Id=7, 16/253 SCBs (probe0:ahc0:0:0:0): inquiry data fails comparison at DV1 step (probe0:ahc0:0:0:0): inquiry data fails comparison at DV1 step (probe0:ahc0:0:0:0): inquiry data fails comparison at DV1 step da0 at ahc0 bus 0 scbus2 target 0 lun 0 da0: <COMPAQPC WDE9100W 1.01> Fixed Direct Access SCSI-2 device da0: 6.600MB/s transfers (16bit) da0: Command Queueing enabled da0: 8678MB (17773500 512 byte sectors: 255H 63S/T 1106C) That this drive is downgraded to 6.600MB/s appears to be known issue -- http://www.freebsd.org/cgi/query-pr.cgi?pr=128245 This appeared to work better with 6.1 FreeBSD 6.1-RELEASE #0: Mon May 29 19:39:51 EDT 2006 ahc1: <Adaptec 2940 Ultra SCSI adapter> port 0x9800-0x98ff mem 0xe3800000-0xe3800fff irq 11 at device 11.0 on pci0 da0: <COMPAQPC WDE9100W 1.01> Fixed Direct Access SCSI-2 device da0: 40.000MB/s transfers (20.000MHz, offset 8, 16bit), Tagged Queueing Enabled da0: 8678MB (17773500 512 byte sectors: 255H 63S/T 1106C) -- Kirk Russell <kirk@ba23.org> http://www.ba23.org/
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
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 MotinThis 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 -- Kirk Russell <kirk@ba23.org> http://www.ba23.org/
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 invalidIt 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
On Sun, Sep 9, 2012 at 4:54 PM, Alexander Motin <mav@freebsd.org> wrote:> 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 >> >>[.....]> > 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. >This is running 9.0-RELEASE, with your patch to scsi_xpt.c: da0 at ahc0 bus 0 scbus2 target 0 lun 0 da0: <COMPAQPC WDE9100W 1.01> Fixed Direct Access SCSI-2 device da0: 40.000MB/s transfers (20.000MHz, offset 8, 16bit) da0: Command Queueing enabled da0: 8678MB (17773500 512 byte sectors: 255H 63S/T 1106C) This is running FreeBSD 9.1-RC1, with your patch to scsi_xpt.c: da0 at ahc0 bus 0 scbus2 target 0 lun 0 da0: <COMPAQPC WDE9100W 1.01> Fixed Direct Access SCSI-2 device da0: 40.000MB/s transfers (20.000MHz, offset 8, 16bit) da0: Command Queueing enabled da0: 8678MB (17773500 512 byte sectors: 255H 63S/T 1106C) -- Kirk Russell <kirk@ba23.org> http://www.ba23.org/