Deleting the line will work in the later kernel versions too. But adding the BLIST_INQUIRY_36 flag _should_ work in 2.6.7 at least; if it doesn't please let me know.
Alan Stern
Didn't work with 2.6.7-rc3-mm2 either.
However, applying Matthew Dharm's patch
[linux-usb-devel] Re: PATCH: INQUIRY fixup, mode-sense options, Genesys devices
to 2.6.7-rc3 seems to have fixed the problem! This is true whether or not CONFIG_USB_STORAGE_RW_DETECT is set.
I've attached the patch I used (copied from Matthew's message - not sure I copied it correctly) and annotated output from /var/log/debug. There are some errors shown but they don't seem to interfere with correct operation. The devinfo.c file was not altered.
Phil
Jun 14 18:00:23 darkstar kernel: usb-storage: Attempting to get CSW... Jun 14 18:00:23 darkstar kernel: usb-storage: usb_stor_bulk_transfer_buf: xfer 13 bytes Jun 14 18:00:23 darkstar kernel: usb-storage: Status code 0; transferred 13/13 Jun 14 18:00:23 darkstar kernel: usb-storage: -- transfer complete Jun 14 18:00:23 darkstar kernel: usb-storage: Bulk status result = 0 Jun 14 18:00:23 darkstar kernel: usb-storage: Bulk Status S 0x53425355 T 0x1f R 0 Stat 0x0 Jun 14 18:00:23 darkstar kernel: usb-storage: scsi cmd done, result=0x0 Jun 14 18:00:23 darkstar kernel: usb-storage: *** thread sleeping. Jun 14 18:00:26 darkstar kernel: pnp: the driver 'parport_pc' has been registered Jun 14 18:00:26 darkstar kernel: pnp: match found with the PnP device '00:0b' and the driver 'parport_pc' Jun 14 18:00:44 darkstar kernel: via_audio: ignoring drain playback error -11 Jun 14 18:00:59 darkstar last message repeated 2 times
---------------------- 2.6.7-rc3-INQ ---- plug-in Jun 14 18:09:16 darkstar kernel: uhci_hcd 0000:00:10.0: port 2 portsc 0093 Jun 14 18:09:16 darkstar kernel: hub 1-0:1.0: port 2, status 0101, change 0001, 12 Mb/s Jun 14 18:09:17 darkstar kernel: hub 1-0:1.0: debounce: port 2: delay 100ms stable 4 status 0x101 Jun 14 18:09:17 darkstar kernel: usb 1-2: new device strings: Mfr=1, Product=2, SerialNumber=3 Jun 14 18:09:17 darkstar kernel: usb 1-2: default language 0x0409 Jun 14 18:09:17 darkstar kernel: usb 1-2: hotplug Jun 14 18:09:17 darkstar kernel: usb 1-2: adding 1-2:1.0 (config #1, interface 0) Jun 14 18:09:17 darkstar kernel: usb 1-2:1.0: hotplug Jun 14 18:09:17 darkstar kernel: usb-storage 1-2:1.0: usb_probe_interface Jun 14 18:09:17 darkstar kernel: usb-storage 1-2:1.0: usb_probe_interface - got id Jun 14 18:09:17 darkstar kernel: usb-storage: USB Mass Storage device detected Jun 14 18:09:17 darkstar kernel: usb-storage: altsetting is 0, id_index is 120 Jun 14 18:09:17 darkstar kernel: usb-storage: -- associate_dev Jun 14 18:09:17 darkstar kernel: usb-storage: Transport: Bulk Jun 14 18:09:17 darkstar kernel: usb-storage: Protocol: Transparent SCSI Jun 14 18:09:17 darkstar kernel: usb-storage: Endpoints: In: 0xcdfe4328 Out: 0xcdfe4314 Int: 0x00000000 (Period 0) Jun 14 18:09:17 darkstar kernel: usb-storage: usb_stor_control_msg: rq=fe rqtype=a1 value=0000 index=00 len=1 Jun 14 18:09:17 darkstar kernel: usb-storage: GetMaxLUN command result is 1, data is 0 Jun 14 18:09:17 darkstar kernel: usb-storage: *** thread sleeping. Jun 14 18:09:17 darkstar kernel: usb-storage: queuecommand called Jun 14 18:09:17 darkstar kernel: usb-storage: *** thread awakened. Jun 14 18:09:17 darkstar kernel: usb-storage: Command INQUIRY (6 bytes) Jun 14 18:09:17 darkstar kernel: usb-storage: 12 00 00 00 24 00 Jun 14 18:09:17 darkstar kernel: usb-storage: Bulk Command S 0x43425355 T 0x20 L 36 F 128 Trg 0 LUN 0 CL 6 Jun 14 18:09:17 darkstar kernel: usb-storage: usb_stor_bulk_transfer_buf: xfer 31 bytes Jun 14 18:09:17 darkstar kernel: usb-storage: Status code 0; transferred 31/31 Jun 14 18:09:17 darkstar kernel: usb-storage: -- transfer complete Jun 14 18:09:17 darkstar kernel: usb-storage: Bulk command transfer result=0 Jun 14 18:09:17 darkstar kernel: usb-storage: usb_stor_bulk_transfer_buf: xfer 36 bytes Jun 14 18:09:17 darkstar kernel: usb-storage: Status code 0; transferred 36/36 Jun 14 18:09:17 darkstar kernel: usb-storage: -- transfer complete Jun 14 18:09:17 darkstar kernel: usb-storage: Bulk data transfer result 0x0 Jun 14 18:09:17 darkstar kernel: usb-storage: Attempting to get CSW... Jun 14 18:09:17 darkstar kernel: usb-storage: usb_stor_bulk_transfer_buf: xfer 13 bytes Jun 14 18:09:17 darkstar kernel: usb-storage: Status code 0; transferred 13/13 Jun 14 18:09:17 darkstar kernel: usb-storage: -- transfer complete Jun 14 18:09:17 darkstar kernel: usb-storage: Bulk status result = 0 Jun 14 18:09:17 darkstar kernel: usb-storage: Bulk Status S 0x53425355 T 0x20 R 0 Stat 0x0 Jun 14 18:09:17 darkstar kernel: usb-storage: Fixing INQUIRY data to show SCSI rev 2 - was 0 Jun 14 18:09:17 darkstar kernel: usb-storage: scsi cmd done, result=0x0 Jun 14 18:09:17 darkstar kernel: usb-storage: *** thread sleeping. Jun 14 18:09:17 darkstar kernel: usb-storage: queuecommand called Jun 14 18:09:17 darkstar kernel: usb-storage: *** thread awakened. Jun 14 18:09:17 darkstar kernel: usb-storage: Command TEST_UNIT_READY (6 bytes) Jun 14 18:09:17 darkstar kernel: usb-storage: 00 00 00 00 00 00 Jun 14 18:09:17 darkstar kernel: usb-storage: Bulk Command S 0x43425355 T 0x21 L 0 F 0 Trg 0 LUN 0 CL 6 Jun 14 18:09:17 darkstar kernel: usb-storage: usb_stor_bulk_transfer_buf: xfer 31 bytes Jun 14 18:09:17 darkstar kernel: usb-storage: Status code 0; transferred 31/31 Jun 14 18:09:17 darkstar kernel: usb-storage: -- transfer complete Jun 14 18:09:17 darkstar kernel: usb-storage: Bulk command transfer result=0 Jun 14 18:09:17 darkstar kernel: usb-storage: Attempting to get CSW... Jun 14 18:09:17 darkstar kernel: usb-storage: usb_stor_bulk_transfer_buf: xfer 13 bytes Jun 14 18:09:17 darkstar kernel: usb-storage: Status code 0; transferred 13/13 Jun 14 18:09:17 darkstar kernel: usb-storage: -- transfer complete Jun 14 18:09:17 darkstar kernel: usb-storage: Bulk status result = 0 Jun 14 18:09:17 darkstar kernel: usb-storage: Bulk Status S 0x53425355 T 0x21 R 0 Stat 0x0 Jun 14 18:09:17 darkstar kernel: usb-storage: scsi cmd done, result=0x0 Jun 14 18:09:17 darkstar kernel: usb-storage: *** thread sleeping. Jun 14 18:09:17 darkstar kernel: usb-storage: queuecommand called Jun 14 18:09:17 darkstar kernel: usb-storage: *** thread awakened. Jun 14 18:09:17 darkstar kernel: usb-storage: Command READ_CAPACITY (10 bytes) Jun 14 18:09:17 darkstar kernel: usb-storage: 25 00 00 00 00 00 00 00 00 00 Jun 14 18:09:17 darkstar kernel: usb-storage: Bulk Command S 0x43425355 T 0x22 L 8 F 128 Trg 0 LUN 0 CL 10 Jun 14 18:09:17 darkstar kernel: usb-storage: usb_stor_bulk_transfer_buf: xfer 31 bytes Jun 14 18:09:17 darkstar kernel: usb-storage: Status code 0; transferred 31/31 Jun 14 18:09:17 darkstar kernel: usb-storage: -- transfer complete Jun 14 18:09:17 darkstar kernel: usb-storage: Bulk command transfer result=0 Jun 14 18:09:17 darkstar kernel: usb-storage: usb_stor_bulk_transfer_buf: xfer 8 bytes Jun 14 18:09:17 darkstar kernel: usb-storage: Status code 0; transferred 8/8 Jun 14 18:09:17 darkstar kernel: usb-storage: -- transfer complete Jun 14 18:09:17 darkstar kernel: usb-storage: Bulk data transfer result 0x0 Jun 14 18:09:17 darkstar kernel: usb-storage: Attempting to get CSW... Jun 14 18:09:17 darkstar kernel: usb-storage: usb_stor_bulk_transfer_buf: xfer 13 bytes Jun 14 18:09:17 darkstar kernel: usb-storage: Status code 0; transferred 13/13 Jun 14 18:09:17 darkstar kernel: usb-storage: -- transfer complete Jun 14 18:09:17 darkstar kernel: usb-storage: Bulk status result = 0 Jun 14 18:09:17 darkstar kernel: usb-storage: Bulk Status S 0x53425355 T 0x22 R 0 Stat 0x0 Jun 14 18:09:17 darkstar kernel: usb-storage: scsi cmd done, result=0x0 Jun 14 18:09:17 darkstar kernel: usb-storage: *** thread sleeping. Jun 14 18:09:17 darkstar kernel: usb-storage: queuecommand called Jun 14 18:09:17 darkstar kernel: usb-storage: *** thread awakened. Jun 14 18:09:17 darkstar kernel: usb-storage: Command MODE_SENSE (6 bytes) Jun 14 18:09:17 darkstar kernel: usb-storage: 1a 00 3f 00 c0 00 Jun 14 18:09:17 darkstar kernel: usb-storage: Bulk Command S 0x43425355 T 0x23 L 192 F 128 Trg 0 LUN 0 CL 6 Jun 14 18:09:17 darkstar kernel: usb-storage: usb_stor_bulk_transfer_buf: xfer 31 bytes Jun 14 18:09:17 darkstar kernel: usb-storage: Status code 0; transferred 31/31 Jun 14 18:09:17 darkstar kernel: usb-storage: -- transfer complete Jun 14 18:09:17 darkstar kernel: usb-storage: Bulk command transfer result=0 Jun 14 18:09:17 darkstar kernel: usb-storage: usb_stor_bulk_transfer_buf: xfer 192 bytes Jun 14 18:09:17 darkstar kernel: usb-storage: Status code 0; transferred 8/192 Jun 14 18:09:17 darkstar kernel: usb-storage: -- short transfer Jun 14 18:09:17 darkstar kernel: usb-storage: Bulk data transfer result 0x1 Jun 14 18:09:17 darkstar kernel: usb-storage: Attempting to get CSW... Jun 14 18:09:17 darkstar kernel: usb-storage: usb_stor_bulk_transfer_buf: xfer 13 bytes Jun 14 18:09:17 darkstar kernel: usb-storage: Status code 0; transferred 13/13 Jun 14 18:09:17 darkstar kernel: usb-storage: -- transfer complete Jun 14 18:09:17 darkstar kernel: usb-storage: Bulk status result = 0 Jun 14 18:09:17 darkstar kernel: usb-storage: Bulk Status S 0x53425355 T 0x23 R 0 Stat 0x0 Jun 14 18:09:17 darkstar kernel: usb-storage: scsi cmd done, result=0x0 Jun 14 18:09:17 darkstar kernel: usb-storage: *** thread sleeping. Jun 14 18:09:17 darkstar kernel: sdb: Mode Sense: 1c 06 00 00 Jun 14 18:09:17 darkstar kernel: usb-storage: queuecommand called Jun 14 18:09:17 darkstar kernel: usb-storage: *** thread awakened. Jun 14 18:09:17 darkstar kernel: usb-storage: Command TEST_UNIT_READY (6 bytes) Jun 14 18:09:17 darkstar kernel: usb-storage: 00 00 00 00 00 00 Jun 14 18:09:17 darkstar kernel: usb-storage: Bulk Command S 0x43425355 T 0x24 L 0 F 0 Trg 0 LUN 0 CL 6 Jun 14 18:09:17 darkstar kernel: usb-storage: usb_stor_bulk_transfer_buf: xfer 31 bytes Jun 14 18:09:17 darkstar kernel: usb-storage: Status code 0; transferred 31/31 Jun 14 18:09:17 darkstar kernel: usb-storage: -- transfer complete Jun 14 18:09:17 darkstar kernel: usb-storage: Bulk command transfer result=0 Jun 14 18:09:17 darkstar kernel: usb-storage: Attempting to get CSW... Jun 14 18:09:17 darkstar kernel: usb-storage: usb_stor_bulk_transfer_buf: xfer 13 bytes Jun 14 18:09:17 darkstar kernel: usb-storage: Status code 0; transferred 13/13 Jun 14 18:09:17 darkstar kernel: usb-storage: -- transfer complete Jun 14 18:09:17 darkstar kernel: usb-storage: Bulk status result = 0 Jun 14 18:09:17 darkstar kernel: usb-storage: Bulk Status S 0x53425355 T 0x24 R 0 Stat 0x0 Jun 14 18:09:17 darkstar kernel: usb-storage: scsi cmd done, result=0x0 Jun 14 18:09:17 darkstar kernel: usb-storage: *** thread sleeping. Jun 14 18:09:17 darkstar kernel: usb-storage: queuecommand called Jun 14 18:09:17 darkstar kernel: usb-storage: *** thread awakened. Jun 14 18:09:17 darkstar kernel: usb-storage: Command ALLOW_MEDIUM_REMOVAL (6 bytes) Jun 14 18:09:17 darkstar kernel: usb-storage: 1e 00 00 00 01 00 Jun 14 18:09:17 darkstar kernel: usb-storage: Bulk Command S 0x43425355 T 0x25 L 0 F 0 Trg 0 LUN 0 CL 6 Jun 14 18:09:17 darkstar kernel: usb-storage: usb_stor_bulk_transfer_buf: xfer 31 bytes Jun 14 18:09:17 darkstar kernel: usb-storage: Status code 0; transferred 31/31 Jun 14 18:09:17 darkstar kernel: usb-storage: -- transfer complete Jun 14 18:09:17 darkstar kernel: usb-storage: Bulk command transfer result=0 Jun 14 18:09:17 darkstar kernel: usb-storage: Attempting to get CSW... Jun 14 18:09:17 darkstar kernel: usb-storage: usb_stor_bulk_transfer_buf: xfer 13 bytes Jun 14 18:09:17 darkstar kernel: usb-storage: Status code 0; transferred 13/13 Jun 14 18:09:17 darkstar kernel: usb-storage: -- transfer complete Jun 14 18:09:17 darkstar kernel: usb-storage: Bulk status result = 0 Jun 14 18:09:17 darkstar kernel: usb-storage: Bulk Status S 0x53425355 T 0x25 R 0 Stat 0x1 Jun 14 18:09:17 darkstar kernel: usb-storage: -- transport indicates command failure Jun 14 18:09:17 darkstar kernel: usb-storage: Issuing auto-REQUEST_SENSE Jun 14 18:09:17 darkstar kernel: usb-storage: Bulk Command S 0x43425355 T 0x80000025 L 18 F 128 Trg 0 LUN 0 CL 6 Jun 14 18:09:17 darkstar kernel: usb-storage: usb_stor_bulk_transfer_buf: xfer 31 bytes Jun 14 18:09:17 darkstar kernel: usb-storage: Status code 0; transferred 31/31 Jun 14 18:09:17 darkstar kernel: usb-storage: -- transfer complete Jun 14 18:09:17 darkstar kernel: usb-storage: Bulk command transfer result=0 Jun 14 18:09:17 darkstar kernel: usb-storage: usb_stor_bulk_transfer_buf: xfer 18 bytes Jun 14 18:09:17 darkstar kernel: usb-storage: Status code 0; transferred 18/18 Jun 14 18:09:17 darkstar kernel: usb-storage: -- transfer complete Jun 14 18:09:17 darkstar kernel: usb-storage: Bulk data transfer result 0x0 Jun 14 18:09:17 darkstar kernel: usb-storage: Attempting to get CSW... Jun 14 18:09:17 darkstar kernel: usb-storage: usb_stor_bulk_transfer_buf: xfer 13 bytes Jun 14 18:09:17 darkstar kernel: usb-storage: Status code 0; transferred 13/13 Jun 14 18:09:17 darkstar kernel: usb-storage: -- transfer complete Jun 14 18:09:17 darkstar kernel: usb-storage: Bulk status result = 0 Jun 14 18:09:17 darkstar kernel: usb-storage: Bulk Status S 0x53425355 T 0x80000025 R 0 Stat 0x0 Jun 14 18:09:17 darkstar kernel: usb-storage: -- Result from auto-sense is 0 Jun 14 18:09:17 darkstar kernel: usb-storage: -- code: 0x70, key: 0x5, ASC: 0x24, ASCQ: 0x0 Jun 14 18:09:17 darkstar kernel: usb-storage: Illegal Request: Invalid field in cdb Jun 14 18:09:17 darkstar kernel: usb-storage: scsi cmd done, result=0x2 Jun 14 18:09:17 darkstar kernel: usb-storage: *** thread sleeping. Jun 14 18:09:17 darkstar kernel: usb-storage: *** thread awakened. Jun 14 18:09:17 darkstar kernel: usb-storage: Command READ_10 (10 bytes) Jun 14 18:09:17 darkstar kernel: usb-storage: 28 00 00 00 00 00 00 00 08 00 Jun 14 18:09:17 darkstar kernel: usb-storage: Bulk Command S 0x43425355 T 0x26 L 4096 F 128 Trg 0 LUN 0 CL 10 Jun 14 18:09:17 darkstar kernel: usb-storage: usb_stor_bulk_transfer_buf: xfer 31 bytes Jun 14 18:09:17 darkstar kernel: usb-storage: Status code 0; transferred 31/31 Jun 14 18:09:17 darkstar kernel: usb-storage: -- transfer complete Jun 14 18:09:17 darkstar kernel: usb-storage: Bulk command transfer result=0 Jun 14 18:09:17 darkstar kernel: usb-storage: usb_stor_bulk_transfer_sglist: xfer 4096 bytes, 1 entries Jun 14 18:09:17 darkstar kernel: usb-storage: Status code 0; transferred 4096/4096 Jun 14 18:09:17 darkstar kernel: usb-storage: -- transfer complete Jun 14 18:09:17 darkstar kernel: usb-storage: Bulk data transfer result 0x0 Jun 14 18:09:17 darkstar kernel: usb-storage: Attempting to get CSW... Jun 14 18:09:17 darkstar kernel: usb-storage: usb_stor_bulk_transfer_buf: xfer 13 bytes Jun 14 18:09:17 darkstar kernel: usb-storage: Status code 0; transferred 13/13 Jun 14 18:09:17 darkstar kernel: usb-storage: -- transfer complete Jun 14 18:09:17 darkstar kernel: usb-storage: Bulk status result = 0 Jun 14 18:09:17 darkstar kernel: usb-storage: Bulk Status S 0x53425355 T 0x26 R 0 Stat 0x0 Jun 14 18:09:17 darkstar kernel: usb-storage: scsi cmd done, result=0x0 Jun 14 18:09:17 darkstar kernel: usb-storage: *** thread sleeping. Jun 14 18:09:17 darkstar kernel: usb-storage: queuecommand called Jun 14 18:09:17 darkstar kernel: usb-storage: *** thread awakened. Jun 14 18:09:17 darkstar kernel: usb-storage: Bad LUN (0:1) Jun 14 18:09:17 darkstar kernel: usb-storage: scsi cmd done, result=0x40000 Jun 14 18:09:17 darkstar kernel: usb-storage: *** thread sleeping. Jun 14 18:09:17 darkstar kernel: usb-storage: queuecommand called Jun 14 18:09:17 darkstar kernel: usb-storage: *** thread awakened. Jun 14 18:09:17 darkstar kernel: usb-storage: Bad target number (1:0) Jun 14 18:09:17 darkstar kernel: usb-storage: scsi cmd done, result=0x40000 Jun 14 18:09:17 darkstar kernel: usb-storage: *** thread sleeping. Jun 14 18:09:17 darkstar kernel: usb-storage: queuecommand called Jun 14 18:09:17 darkstar kernel: usb-storage: *** thread awakened. Jun 14 18:09:17 darkstar kernel: usb-storage: Bad target number (2:0) Jun 14 18:09:17 darkstar kernel: usb-storage: scsi cmd done, result=0x40000 Jun 14 18:09:17 darkstar kernel: usb-storage: *** thread sleeping. Jun 14 18:09:17 darkstar kernel: usb-storage: queuecommand called Jun 14 18:09:17 darkstar kernel: usb-storage: *** thread awakened. Jun 14 18:09:17 darkstar kernel: usb-storage: Bad target number (3:0) Jun 14 18:09:17 darkstar kernel: usb-storage: scsi cmd done, result=0x40000 Jun 14 18:09:17 darkstar kernel: usb-storage: *** thread sleeping. Jun 14 18:09:17 darkstar kernel: usb-storage: queuecommand called Jun 14 18:09:17 darkstar kernel: usb-storage: *** thread awakened. Jun 14 18:09:17 darkstar kernel: usb-storage: Bad target number (4:0) Jun 14 18:09:17 darkstar kernel: usb-storage: scsi cmd done, result=0x40000 Jun 14 18:09:17 darkstar kernel: usb-storage: *** thread sleeping. Jun 14 18:09:17 darkstar kernel: usb-storage: queuecommand called Jun 14 18:09:17 darkstar kernel: usb-storage: *** thread awakened. Jun 14 18:09:17 darkstar kernel: usb-storage: Bad target number (5:0) Jun 14 18:09:17 darkstar kernel: usb-storage: scsi cmd done, result=0x40000 Jun 14 18:09:17 darkstar kernel: usb-storage: *** thread sleeping. Jun 14 18:09:17 darkstar kernel: usb-storage: queuecommand called Jun 14 18:09:17 darkstar kernel: usb-storage: *** thread awakened. Jun 14 18:09:17 darkstar kernel: usb-storage: Bad target number (6:0) Jun 14 18:09:17 darkstar kernel: usb-storage: scsi cmd done, result=0x40000 Jun 14 18:09:17 darkstar kernel: usb-storage: *** thread sleeping. Jun 14 18:09:17 darkstar kernel: usb-storage: queuecommand called Jun 14 18:09:17 darkstar kernel: usb-storage: *** thread awakened. Jun 14 18:09:17 darkstar kernel: usb-storage: Bad target number (7:0) Jun 14 18:09:17 darkstar kernel: usb-storage: scsi cmd done, result=0x40000 Jun 14 18:09:17 darkstar kernel: usb-storage: *** thread sleeping. Jun 14 18:09:17 darkstar kernel: USB Mass Storage device found at 3 ---------------------- try mount /smc -- /dev/sdb1 Jun 14 18:14:19 darkstar kernel: usb-storage: queuecommand called Jun 14 18:14:19 darkstar kernel: usb-storage: *** thread awakened. Jun 14 18:14:19 darkstar kernel: usb-storage: Command TEST_UNIT_READY (6 bytes) Jun 14 18:14:19 darkstar kernel: usb-storage: 00 00 00 00 00 00 Jun 14 18:14:19 darkstar kernel: usb-storage: Bulk Command S 0x43425355 T 0x2f L 0 F 0 Trg 0 LUN 0 CL 6 Jun 14 18:14:19 darkstar kernel: usb-storage: usb_stor_bulk_transfer_buf: xfer 31 bytes Jun 14 18:14:19 darkstar kernel: usb-storage: Status code 0; transferred 31/31 Jun 14 18:14:19 darkstar kernel: usb-storage: -- transfer complete Jun 14 18:14:19 darkstar kernel: usb-storage: Bulk command transfer result=0 Jun 14 18:14:19 darkstar kernel: usb-storage: Attempting to get CSW... Jun 14 18:14:19 darkstar kernel: usb-storage: usb_stor_bulk_transfer_buf: xfer 13 bytes Jun 14 18:14:19 darkstar kernel: usb-storage: Status code 0; transferred 13/13 Jun 14 18:14:19 darkstar kernel: usb-storage: -- transfer complete Jun 14 18:14:19 darkstar kernel: usb-storage: Bulk status result = 0 Jun 14 18:14:19 darkstar kernel: usb-storage: Bulk Status S 0x53425355 T 0x2f R 0 Stat 0x0 Jun 14 18:14:19 darkstar kernel: usb-storage: scsi cmd done, result=0x0 Jun 14 18:14:19 darkstar kernel: usb-storage: *** thread sleeping. Jun 14 18:14:19 darkstar kernel: usb-storage: queuecommand called Jun 14 18:14:19 darkstar kernel: usb-storage: *** thread awakened. Jun 14 18:14:19 darkstar kernel: usb-storage: Command READ_10 (10 bytes) Jun 14 18:14:19 darkstar kernel: usb-storage: 28 00 00 00 00 19 00 00 01 00 Jun 14 18:14:19 darkstar kernel: usb-storage: Bulk Command S 0x43425355 T 0x30 L 512 F 128 Trg 0 LUN 0 CL 10 Jun 14 18:14:19 darkstar kernel: usb-storage: usb_stor_bulk_transfer_buf: xfer 31 bytes Jun 14 18:14:19 darkstar kernel: usb-storage: Status code 0; transferred 31/31 Jun 14 18:14:19 darkstar kernel: usb-storage: -- transfer complete Jun 14 18:14:19 darkstar kernel: usb-storage: Bulk command transfer result=0 Jun 14 18:14:19 darkstar kernel: usb-storage: usb_stor_bulk_transfer_sglist: xfer 512 bytes, 1 entries Jun 14 18:14:19 darkstar kernel: usb-storage: Status code 0; transferred 512/512 Jun 14 18:14:19 darkstar kernel: usb-storage: -- transfer complete Jun 14 18:14:19 darkstar kernel: usb-storage: Bulk data transfer result 0x0 Jun 14 18:14:19 darkstar kernel: usb-storage: Attempting to get CSW... Jun 14 18:14:19 darkstar kernel: usb-storage: usb_stor_bulk_transfer_buf: xfer 13 bytes Jun 14 18:14:19 darkstar kernel: usb-storage: Status code 0; transferred 13/13 Jun 14 18:14:19 darkstar kernel: usb-storage: -- transfer complete Jun 14 18:14:19 darkstar kernel: usb-storage: Bulk status result = 0 Jun 14 18:14:19 darkstar kernel: usb-storage: Bulk Status S 0x53425355 T 0x30 R 0 Stat 0x0 Jun 14 18:14:19 darkstar kernel: usb-storage: scsi cmd done, result=0x0 Jun 14 18:14:19 darkstar kernel: usb-storage: *** thread sleeping. Jun 14 18:14:19 darkstar kernel: usb-storage: queuecommand called Jun 14 18:14:19 darkstar kernel: usb-storage: *** thread awakened. Jun 14 18:14:19 darkstar kernel: usb-storage: Command READ_10 (10 bytes)
diff -Nru a/drivers/usb/storage/Kconfig b/drivers/usb/storage/Kconfig
--- a/drivers/usb/storage/Kconfig Sun Jun 13 15:24:10 2004
+++ b/drivers/usb/storage/Kconfig Sun Jun 13 15:24:10 2004
@@ -23,6 +23,28 @@
Say Y here in order to have the USB Mass Storage code generate
verbose debugging messages.
+config USB_STORAGE_RW_DETECT
+ bool "USB Mass Storage Write-Protected Media Detection (EXPERIMENTAL)"
+ depends on USB_STORAGE && EXPERIMENTAL
+ help
+ Say Y here in order to have the USB Mass Storage code indicate to
+ the SCSI layer that using MODE SENSE(6) and MODE SENSE(10) to
+ determine if the media is write-protected is a good thing to do.
+
+ Many devices have historically had trouble with these commands,
+ hence the default 2.6.x behavior has been to suppress their use.
+ 2.4.x used these commands with (at best) mixed results, often
+ crashing the firmware of the device. However, the SCSI layer now
+ issues these commands in a manner more consistent with other
+ "popular" OSes, in an attempt to improve compatibility.
+
+ Saying Y here allows these commands to be sent to a USB device.
+ If you find a device this doesn't work for, switch to N and let
+ us know at [EMAIL PROTECTED]
+
+ If you say N here, the kernel will assume that all disk-like USB
+ devices are write-enabled.
+
config USB_STORAGE_DATAFAB
bool "Datafab Compact Flash Reader support (EXPERIMENTAL)"
depends on USB_STORAGE && EXPERIMENTAL
diff -Nru a/drivers/usb/storage/scsiglue.c b/drivers/usb/storage/scsiglue.c
--- a/drivers/usb/storage/scsiglue.c Sun Jun 13 15:24:10 2004
+++ b/drivers/usb/storage/scsiglue.c Sun Jun 13 15:24:10 2004
@@ -48,13 +48,13 @@
#include "usb.h"
#include "debug.h"
#include "transport.h"
+#include "protocol.h"
#include <linux/slab.h>
#include <linux/module.h>
#include <scsi/scsi_devinfo.h>
#include <scsi/scsi_host.h>
-
/***********************************************************************
* Host functions
***********************************************************************/
@@ -68,10 +68,13 @@
{
/*
* Set default bflags. These can be overridden for individual
- * models and vendors via the scsi devinfo mechanism.
+ * models and vendors via the scsi devinfo mechanism. The only
+ * flag we need is to force 36-byte INQUIRYs; we don't use any
+ * of the extra data and many devices choke if asked for more or
+ * less than 36 bytes.
*/
- sdev->sdev_bflags = (BLIST_MS_SKIP_PAGE_08 | BLIST_MS_SKIP_PAGE_3F |
- BLIST_USE_10_BYTE_MS);
+ sdev->sdev_bflags = BLIST_INQUIRY_36;
+
return 0;
}
@@ -95,11 +98,48 @@
* reduce the maximum transfer size to 64 KB = 128 sectors. */
#define USB_VENDOR_ID_GENESYS 0x05e3 // Needs a standard location
+
if (us->pusb_dev->descriptor.idVendor == USB_VENDOR_ID_GENESYS &&
- us->pusb_dev->speed == USB_SPEED_HIGH)
+ us->pusb_dev->speed == USB_SPEED_HIGH &&
+ sdev->request_queue->max_sectors > 128)
blk_queue_max_sectors(sdev->request_queue, 128);
- /* this is to satisify the compiler, tho I don't think the
+ /* We can't put these settings in slave_alloc() because that gets
+ * called before the device type is known. Consequently these
+ * settings can't be overridden via the scsi devinfo mechanism. */
+ if (sdev->type == TYPE_DISK) {
+
+ /* Disk-type devices use MODE SENSE(6) if the protocol
+ * (SubClass) is Transparent SCSI, otherwise they use
+ * MODE SENSE(10). */
+ if (us->subclass != US_SC_SCSI)
+ sdev->use_10_for_ms = 1;
+
+ /* Many disks only accept MODE SENSE transfer lengths of
+ * 192 bytes (that's what Windows uses). */
+ sdev->use_192_bytes_for_3f = 1;
+
+ /* A number of devices have problems with MODE SENSE for
+ * page x08, so we will skip it. */
+ sdev->skip_ms_page_8 = 1;
+
+#ifndef CONFIG_USB_STORAGE_RW_DETECT
+ /* Some devices may not like MODE SENSE with page=0x3f.
+ * Now that we're using 192-byte transfers this may no
+ * longer be a problem. So this will be a configuration
+ * option. */
+ sdev->skip_ms_page_3f = 1;
+#endif
+
+ } else {
+
+ /* Non-disk-type devices don't need to blacklist any pages
+ * or to force 192-byte transfer lengths for MODE SENSE.
+ * But they do need to use MODE SENSE(10). */
+ sdev->use_10_for_ms = 1;
+ }
+
+ /* this is to satisfy the compiler, tho I don't think the
* return code is ever checked anywhere. */
return 0;
}
