Top > FreeBSD > USB接続HDD SCSI Status Error
ZFSプールを作成しkernelをATA_CAM化した後に"SCSI Status Error"が大量に出るようになり、その対処作業の備忘録です
新規USBデバイス追加
USB quirk を追加: uyota 匠の一手
以上のサイトを参考にさせていただきました
GENERIC kernelでは発生しなかったエラーだったのでkernel configに問題があるような気もしますが、ともかく対応します
FreeBSD 8.1-Release時にZFSのテストでUSB flashに導入後、kernelをカスタマイズした時にUSB flashにアクセスすると"SCSI Status Error"になり、その時のGENERIC kernelでは"SCSI Status Error"にならなかった記憶があります
# dmesg ...(省略) (da3:umass-sim4:4:0:0): SYNCHRONIZE CACHE(10). CDB: 35 0 0 0 0 0 0 0 0 0 (da3:umass-sim4:4:0:0): CAM status: SCSI Status Error (da3:umass-sim4:4:0:0): SCSI status: Check Condition (da3:umass-sim4:4:0:0): SCSI sense: ILLEGAL REQUEST asc:20,0 (Invalid command operation code) (da5:umass-sim6:6:0:0): SYNCHRONIZE CACHE(10). CDB: 35 0 0 0 0 0 0 0 0 0 (da5:umass-sim6:6:0:0): CAM status: SCSI Status Error (da5:umass-sim6:6:0:0): SCSI status: Check Condition (da5:umass-sim6:6:0:0): SCSI sense: ILLEGAL REQUEST asc:20,0 (Invalid command o peration code) (da1:umass-sim2:2:0:0): SYNCHRONIZE CACHE(10). CDB: 35 0 0 0 0 0 0 0 0 0 (da1:umass-sim2:2:0:0): CAM status: SCSI Status Error (da1:umass-sim2:2:0:0): SCSI status: Check Condition (da1:umass-sim2:2:0:0): SCSI sense: ILLEGAL REQUEST asc:24,0 (Invalid field in CDB) (da0:umass-sim1:1:0:0): SYNCHRONIZE CACHE(10). CDB: 35 0 0 0 0 0 0 0 0 0 (da0:umass-sim1:1:0:0): CAM status: SCSI Status Error (da0:umass-sim1:1:0:0): SCSI status: Check Condition (da0:umass-sim1:1:0:0): SCSI sense: ILLEGAL REQUEST asc:24,0 (Invalid field in CDB)
# dmesg ...(省略) ugen3.3: <vendor 0x05e3> at usbus3 umass1: <vendor 0x05e3 USB Storage, class 0/0, rev 2.00/0.09, addr 3> on usbus3 umass1: SCSI over Bulk-Only; quirks = 0x0000 ...(省略) umass1:7:1:-1: Attached to scbus7 ...(省略) da0 at umass-sim1 bus 1 scbus7 target 0 lun 0 da0: <WDC WD15 EARS-00MVWB0 0009> Fixed Direct Access SCSI-0 device da0: 40.000MB/s transfers da0: 1430799MB (2930277164 512 byte sectors: 255H 63S/T 182401C) ...(省略) ugen3.4: <vendor 0x05e3> at usbus3 umass2: <vendor 0x05e3 USB Storage, class 0/0, rev 2.00/0.09, addr 4> on usbus3 umass2: SCSI over Bulk-Only; quirks = 0x0000 ...(省略) umass2:8:2:-1: Attached to scbus8 da1 at umass-sim2 bus 2 scbus8 target 0 lun 0 da1: <WDC WD20 EARS-00MVWB0 0009> Fixed Direct Access SCSI-0 device da1: 40.000MB/s transfers da1: 1907729MB (3907029164 512 byte sectors: 255H 63S/T 243201C) ...(省略) ugen3.5: <JMicron> at usbus3 umass4: <MSC Bulk-Only Transfer> on usbus3 umass4: SCSI over Bulk-Only; quirks = 0x0000 ...(省略) umass4:10:4:-1: Attached to scbus10 da3 at umass-sim4 bus 4 scbus10 target 0 lun 0 da3: <WDC WD50 00AAKS-00YGA0 > Fixed Direct Access SCSI-2 device da3: 40.000MB/s transfers da3: 476938MB (976771055 512 byte sectors: 255H 63S/T 60801C) ...(省略) ugen3.6: <JMicron> at usbus3 umass6: <MSC Bulk-Only Transfer> on usbus3 umass6: SCSI over Bulk-Only; quirks = 0x0000 ...(省略) umass6:12:6:-1: Attached to scbus12 da5 at umass-sim6 bus 6 scbus12 target 0 lun 0 da5: <Hitachi HDP725050GLA360 > Fixed Direct Access SCSI-2 device da5: 40.000MB/s transfers da5: 476940MB (976773168 512 byte sectors: 255H 63S/T 60801C) ...(省略)
# usbconfig -d 3.3 dump_device_desc ugen3.3: <USB Storage vendor 0x05e3> at usbus3, cfg=0 md=HOST spd=HIGH (480Mbps ) pwr=ON bLength = 0x0012 bDescriptorType = 0x0001 bcdUSB = 0x0200 bDeviceClass = 0x0000 bDeviceSubClass = 0x0000 bDeviceProtocol = 0x0000 bMaxPacketSize0 = 0x0040 idVendor = 0x05e3 idProduct = 0x0718 bcdDevice = 0x0009 iManufacturer = 0x0000 <no string> iProduct = 0x0001 <USB Storage> iSerialNumber = 0x0002 <000000000033> bNumConfigurations = 0x0001 # usbconfig -d 3.4 dump_device_desc ugen3.4: <USB Storage vendor 0x05e3> at usbus3, cfg=0 md=HOST spd=HIGH (480Mbps ) pwr=ON bLength = 0x0012 bDescriptorType = 0x0001 bcdUSB = 0x0200 bDeviceClass = 0x0000 bDeviceSubClass = 0x0000 bDeviceProtocol = 0x0000 bMaxPacketSize0 = 0x0040 idVendor = 0x05e3 idProduct = 0x0718 bcdDevice = 0x0009 iManufacturer = 0x0000 <no string> iProduct = 0x0001 <USB Storage> iSerialNumber = 0x0002 <000000000033> bNumConfigurations = 0x0001 # usbconfig -d 3.5 dump_device_desc ugen3.5: <USB to ATA/ATAPI Bridge JMicron> at usbus3, cfg=0 md=HOST spd=HIGH (4 80Mbps) pwr=ON bLength = 0x0012 bDescriptorType = 0x0001 bcdUSB = 0x0200 bDeviceClass = 0x0000 bDeviceSubClass = 0x0000 bDeviceProtocol = 0x0000 bMaxPacketSize0 = 0x0040 idVendor = 0x152d idProduct = 0x2339 bcdDevice = 0x0100 iManufacturer = 0x0001 <JMicron> iProduct = 0x0002 <USB to ATA/ATAPI Bridge> iSerialNumber = 0x0005 <DCA84831844F> bNumConfigurations = 0x0001 # usbconfig -d 3.6 dump_device_desc ugen3.6: <USB to ATA/ATAPI Bridge JMicron> at usbus3, cfg=0 md=HOST spd=HIGH (4 80Mbps) pwr=ON bLength = 0x0012 bDescriptorType = 0x0001 bcdUSB = 0x0200 bDeviceClass = 0x0000 bDeviceSubClass = 0x0000 bDeviceProtocol = 0x0000 bMaxPacketSize0 = 0x0040 idVendor = 0x152d idProduct = 0x2339 bcdDevice = 0x0100 iManufacturer = 0x0001 <JMicron> iProduct = 0x0002 <USB to ATA/ATAPI Bridge> iSerialNumber = 0x0005 <EA534F3BBAFF> bNumConfigurations = 0x0001
# cd /usr/src/sys/dev/usb # find . -type f | xargs grep -i 5e3 usbdevs:vendor GENESYS 0x05e3 Genesys Logic # find . -type f | xargs grep -i 152d usbdevs:vendor JMICRON 0x152d JMicron
idVendor:0x152d idProduct:0x2339
とわかりました
修正する箇所がわかりましたので、それぞれのデバイスに対応していきます
# usbconfig -d 3.3 add_quirk UQ_MSC_NO_SYNC_CACHE # usbconfig -d 3.3 reset # usbconfig -d 3.4 add_quirk UQ_MSC_NO_SYNC_CACHE # usbconfig -d 3.4 reset # usbconfig -d 3.5 add_quirk UQ_MSC_NO_SYNC_CACHE # usbconfig -d 3.5 reset # usbconfig -d 3.6 add_quirk UQ_MSC_NO_SYNC_CACHE # usbconfig -d 3.6 reset
product GENESYS GL830USB2SATA 0x0718 GL830USB USB-SATA Brigde product JMICRON JM20339 0x2339 USB to SATA Bridge
USB_QUIRK(GENESYS, GL830USB2SATA, 0x0000, 0xffff, UQ_MSC_NO_SYNC_CACHE), USB_QUIRK(JMICRON, JM20339, 0x0000, 0xffff, UQ_MSC_NO_SYNC_CACHE),
修正後、buildkernel、installkernelし再起動して対応終了です
( |