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;
 }

Reply via email to