Skip to contentSkip to conversation

Time to conclude the Sony USB mass storage thread

DISCUSSION James Bottomley 4 participants 14 messages Nov 14, 2003 – Nov 17, 2003

Subsystems (3)
lore
Share & tools
lore
#0 lore raw

I think the fix we're all agreed on is preventing mode sense being issued to USB storage.

Since Patrick has already provided the mechanics for this, I suggest we do this by setting the skip_ms_page_3f and skip_ms_page_8 globally in the usb-storage slave configure routines.

If there are known good devices, it would probably be best to add them to the USB special devices list to have these flags reset for the capabilities.

The nice thing about this approach is that I don't have to do anything in SCSI, and the control of the USB black/white list is entirely in the USB subsystem.

Does this sound like a plan?

James

#1 lore raw
Quoted 8 lines · James Bottomley

Since Patrick has already provided the mechanics for this, I suggest we do this by setting the skip_ms_page_3f and skip_ms_page_8 globally in the usb-storage slave configure routines.

If there are known good devices, it would probably be best to add them to the USB special devices list to have these flags reset for the capabilities.

Quoted 5 lines

The nice thing about this approach is that I don't have to do anything in SCSI, and the control of the USB black/white list is entirely in the USB subsystem.

Does this sound like a plan?

It would be best to just use the BLIST flags setting in the host .flags, the following simple patch (only compile tested!) will not send any MODE SENSE to sd devices (SCSI direct access inquiry type 0, or optical memory/optical disks inquiry type 7).

It also allows the setting to be overwritten for specific vendor + model via the scsi_devinfo/dev_flags code - so users or distributions can white list devices without modifying the kernel (devinfo settings have priority over shost->flags, see scsi_devinfo.c).

I did not give the flags very good names, for clarity:

BLIST_MS_SKIP_PAGE_08 means for sd assume write through cache.

BLIST_MS_SKIP_PAGE_3F means for sd assume writable media.

And we don't need any special code in a slave_configure or elsewhere to check if it is a direct access device.

drivers/usb/storage/scsiglue.c +2 -1
diff -uprN -X /home/patman/dontdiff bl-25/drivers/usb/storage/scsiglue.c usb-ms-flags/drivers/usb/storage/scsiglue.c
@@ -322,7 +322,8 @@ struct scsi_host_template usb_stor_host_
 	.emulated =			TRUE,
 
 	/* modify scsi_device bits on probe */
-	.flags = (BLIST_MS_SKIP_PAGE_08 | BLIST_USE_10_BYTE_MS),
+	.flags = (BLIST_MS_SKIP_PAGE_08 | BLIST_MS_SKIP_PAGE_3F |
+		  BLIST_USE_10_BYTE_MS),
 
 	/* module management */
 	.module =			THIS_MODULE
#2 lore raw

I'm strongly attempted to agree with you guys.... blacklisting looks like the way to go.

I'm concerned about the names, tho.... BLIST_MS_SKIP_PAGE_08 sounds more general than it is -- as I understand it, this flag will only affect sd.c, tho it looks much more general.

I think I'd rather tweak the structure in slave_configure, where it will be easier to add more logic if people decide we need it in the future.

Matt

Quoted 47 lines · Patrick Mansfield
Quoted 8 lines · James Bottomley

Since Patrick has already provided the mechanics for this, I suggest we do this by setting the skip_ms_page_3f and skip_ms_page_8 globally in the usb-storage slave configure routines.

If there are known good devices, it would probably be best to add them to the USB special devices list to have these flags reset for the capabilities.

Quoted 5 lines

The nice thing about this approach is that I don't have to do anything in SCSI, and the control of the USB black/white list is entirely in the USB subsystem.

Does this sound like a plan?

It would be best to just use the BLIST flags setting in the host .flags, the following simple patch (only compile tested!) will not send any MODE SENSE to sd devices (SCSI direct access inquiry type 0, or optical memory/optical disks inquiry type 7).

It also allows the setting to be overwritten for specific vendor + model via the scsi_devinfo/dev_flags code - so users or distributions can white list devices without modifying the kernel (devinfo settings have priority over shost->flags, see scsi_devinfo.c).

I did not give the flags very good names, for clarity:

BLIST_MS_SKIP_PAGE_08 means for sd assume write through cache.

BLIST_MS_SKIP_PAGE_3F means for sd assume writable media.

And we don't need any special code in a slave_configure or elsewhere to check if it is a direct access device.

diff -uprN -X /home/patman/dontdiff bl-25/drivers/usb/storage/scsiglue.c usb-ms-flags/drivers/usb/storage/scsiglue.c

drivers/usb/storage/scsiglue.c +2 -1
@@ -322,7 +322,8 @@ struct scsi_host_template usb_stor_host_
 	.emulated =			TRUE,
 
 	/* modify scsi_device bits on probe */
-	.flags = (BLIST_MS_SKIP_PAGE_08 | BLIST_USE_10_BYTE_MS),
+	.flags = (BLIST_MS_SKIP_PAGE_08 | BLIST_MS_SKIP_PAGE_3F |
+		  BLIST_USE_10_BYTE_MS),
 
 	/* module management */
 	.module =			THIS_MODULE
Signature · 8 lines
Matthew Dharm                              Home: [email protected] 
Maintainer, Linux USB Mass Storage Driver

G:  Money isn't everything, A.J.
AJ: Who convinced you of that?
G:  The Chief, at my last salary review.
					-- Mike and Greg
User Friendly, 11/3/1998
#3 lore raw
Quoted 6 lines · Matthew Dharm

I'm strongly attempted to agree with you guys.... blacklisting looks like the way to go.

I'm concerned about the names, tho.... BLIST_MS_SKIP_PAGE_08 sounds more general than it is -- as I understand it, this flag will only affect sd.c, tho it looks much more general.

We can change the name.

Quoted 2 lines

I think I'd rather tweak the structure in slave_configure, where it will be easier to add more logic if people decide we need it in the future.

Unlike scsi_devinfo/dev_flags, we can't override slave_configure changes (unless you add other code).

-- Patrick Mansfield

#4 lore raw
Quoted 6 lines · Patrick Mansfield
Quoted 2 lines · Matthew Dharm

I think I'd rather tweak the structure in slave_configure, where it will be easier to add more logic if people decide we need it in the future.

Unlike scsi_devinfo/dev_flags, we can't override slave_configure changes (unless you add other code).

It's not immediately clear how we can override it if it's scsi_devinfo/dev_flags. Can you elaborate?

Matt

Signature · 7 lines
Matthew Dharm                              Home: [email protected] 
Maintainer, Linux USB Mass Storage Driver

E:  You run this ship with Windows?!  YOU IDIOT!
L:  Give me a break, it came bundled with the computer!
					-- ESR and Lan Solaris
User Friendly, 12/8/1998
#5 lore raw
Quoted 2 lines · Matthew Dharm

It's not immediately clear how we can override it if it's scsi_devinfo/dev_flags. Can you elaborate?

The same way you can set it is the same way it can be cleared.

If we want to allow all standard scsi core usage, as if there were not special flag settings at all, and including using MODE SENSE 6, use ("model" is synonymous with SCSI product):

echo "vendor:model:0" > /proc/scsi/device_info

If we want MODE SENSE 10, default cache write through (if the device can't do MODE SENSE page 8), use BLIST_USE_10_BYTE_MS | BLIST_MS_SKIP_PAGE_08 (0x8000 | 0x2000):

	echo "vendor:model:0xa000" > /proc/scsi/device_info

The above can also be done at boot time or scsi_mod load time, on boot use:

	scsi_mod.dev_flags=vendor:model:0xa000

For scsi_mod as a module just drop the "scsi_mod." prefix.

The above does not allow us to send a variant of the MODE SENSE, like the Sony really wants - MODE SENSE with a 10 byte (or larger) buffer - but that would require a patch like the other one I sent, or command filtering code, plus other code to enable/disable its use.

We still need a sysfs attribute to eventually replace the proc one - this should be done by using module_param_call instead of module_param_string (we need a special callout to parse the string, I did not understand module_param_call when I added module_param usage), plus code to always (not just for modules) add sysfs parameters for all module_param entries.

The device specific flags override any other settings - the shost->flags or the scsi_default_dev_flags. We don't have any deletion method other than reboot, but the last setting added overrides earlier settings, and so you can even overide static entries in scsi_devinfo.c.

-- Patrick Mansfield

#6 lore raw

So the vendor/model blacklist completely overrides the .flags setting in the host template?

I thought the flags were just logically-or'ed

Matt

Quoted 47 lines · Patrick Mansfield
Quoted 2 lines · Matthew Dharm

It's not immediately clear how we can override it if it's scsi_devinfo/dev_flags. Can you elaborate?

The same way you can set it is the same way it can be cleared.

If we want to allow all standard scsi core usage, as if there were not special flag settings at all, and including using MODE SENSE 6, use ("model" is synonymous with SCSI product):

echo "vendor:model:0" > /proc/scsi/device_info

If we want MODE SENSE 10, default cache write through (if the device can't do MODE SENSE page 8), use BLIST_USE_10_BYTE_MS | BLIST_MS_SKIP_PAGE_08 (0x8000 | 0x2000):

	echo "vendor:model:0xa000" > /proc/scsi/device_info

The above can also be done at boot time or scsi_mod load time, on boot use:

	scsi_mod.dev_flags=vendor:model:0xa000

For scsi_mod as a module just drop the "scsi_mod." prefix.

The above does not allow us to send a variant of the MODE SENSE, like the Sony really wants - MODE SENSE with a 10 byte (or larger) buffer - but that would require a patch like the other one I sent, or command filtering code, plus other code to enable/disable its use.

We still need a sysfs attribute to eventually replace the proc one - this should be done by using module_param_call instead of module_param_string (we need a special callout to parse the string, I did not understand module_param_call when I added module_param usage), plus code to always (not just for modules) add sysfs parameters for all module_param entries.

The device specific flags override any other settings - the shost->flags or the scsi_default_dev_flags. We don't have any deletion method other than reboot, but the last setting added overrides earlier settings, and so you can even overide static entries in scsi_devinfo.c.

-- Patrick Mansfield
_______________________________________________
usb-storage mailing list
[email protected]
http://www2.one-eyed-alien.net/mailman/listinfo/usb-storage

Signature · 6 lines
Matthew Dharm                              Home: [email protected] 
Maintainer, Linux USB Mass Storage Driver

THEY CASTRATED MY QUAKE BITS! I WANT THEM BACK!!!!
					-- Greg
User Friendly, 3/27/1998
#7 lore raw
Quoted 2 lines · Matthew Dharm

So the vendor/model blacklist completely overrides the .flags setting in the host template?

Correct.

Quoted 1 line

I thought the flags were just logically-or'ed

No, so entries have to include all bits needed.

Can you apply the patch, and test it out with your devices?

I'm a bit busy today. I assume test10 or 2.6.0 will show up real soon.

Thanks.

-- Patrick Mansfield

#8 lore raw

I went ahead and tested the patch with a Sony / Sony DSC on my laptop with no problems.

James, Matthew, etc. - are you OK with the patch?

Here's usb storage debug output on attach of the device, note the lack of any MODE SENSE:

Nov 14 18:01:47 laptop patman: NOTE attaching NOTE
Nov 14 18:01:56 laptop kernel: usb-storage: USB Mass Storage device detected
Nov 14 18:01:56 laptop kernel: usb-storage: act_altsetting is 0, id_index is 25
Nov 14 18:01:56 laptop kernel: usb-storage: -- associate_dev
Nov 14 18:01:56 laptop kernel: usb-storage: Vendor: Sony
Nov 14 18:01:56 laptop kernel: usb-storage: Product: DSC-S30/S70/S75/505V/F505/F707/F717/P8
Nov 14 18:01:56 laptop kernel: usb-storage: Transport: Control/Bulk
Nov 14 18:01:56 laptop kernel: usb-storage: Protocol: Transparent SCSI
Nov 14 18:01:56 laptop kernel: usb-storage: Endpoints: In: 0xca8bb280 Out: 0xca8bb294 Int: 0xca8bb2a8 (Period 255)
Nov 14 18:01:56 laptop kernel: usb-storage: *** thread sleeping.
Nov 14 18:01:56 laptop kernel: usb-storage: queuecommand called
Nov 14 18:01:56 laptop kernel: usb-storage: *** thread awakened.
Nov 14 18:01:56 laptop kernel: usb-storage: Command INQUIRY (6 bytes)
Nov 14 18:01:56 laptop kernel: usb-storage:  12 00 00 00 24 00
Nov 14 18:01:56 laptop kernel: usb-storage: usb_stor_ctrl_transfer: rq=00 rqtype=21 value=0000 index=00 len=6
Nov 14 18:01:56 laptop kernel: usb-storage: Status code 0; transferred 6/6
Nov 14 18:01:56 laptop kernel: usb-storage: -- transfer complete
Nov 14 18:01:56 laptop kernel: usb-storage: Call to usb_stor_ctrl_transfer() returned 0
Nov 14 18:01:56 laptop kernel: usb-storage: usb_stor_bulk_transfer_buf: xfer 36 bytes
Nov 14 18:01:56 laptop kernel: usb-storage: Status code 0; transferred 36/36
Nov 14 18:01:56 laptop kernel: usb-storage: -- transfer complete
Nov 14 18:01:56 laptop kernel: usb-storage: CB data stage result is 0x0
Nov 14 18:01:56 laptop kernel: usb-storage: -- CB transport device requiring auto-sense
Nov 14 18:01:56 laptop kernel: usb-storage: Issuing auto-REQUEST_SENSE
Nov 14 18:01:56 laptop kernel: usb-storage: usb_stor_ctrl_transfer: rq=00 rqtype=21 value=0000 index=00 len=6
Nov 14 18:01:56 laptop kernel: usb-storage: Status code 0; transferred 6/6
Nov 14 18:01:56 laptop kernel: usb-storage: -- transfer complete
Nov 14 18:01:56 laptop kernel: usb-storage: Call to usb_stor_ctrl_transfer() returned 0
Nov 14 18:01:56 laptop kernel: usb-storage: usb_stor_bulk_transfer_buf: xfer 18 bytes
Nov 14 18:01:56 laptop kernel: usb-storage: Status code 0; transferred 18/18
Nov 14 18:01:56 laptop kernel: usb-storage: -- transfer complete
Nov 14 18:01:56 laptop kernel: usb-storage: CB data stage result is 0x0
Nov 14 18:01:56 laptop kernel: usb-storage: -- Result from auto-sense is 0
Nov 14 18:01:56 laptop kernel: usb-storage: -- code: 0x70, key: 0x0, ASC: 0x0, ASCQ: 0x0
Nov 14 18:01:56 laptop kernel: usb-storage: No Sense: No additional sense information
Nov 14 18:01:56 laptop kernel: usb-storage: Fixing INQUIRY data to show SCSI rev 2 - was 0
Nov 14 18:01:56 laptop kernel: usb-storage: scsi cmd done, result=0x0
Nov 14 18:01:56 laptop kernel: usb-storage: *** thread sleeping.
Nov 14 18:01:56 laptop kernel: usb-storage: queuecommand called
Nov 14 18:01:56 laptop kernel: usb-storage: *** thread awakened.
Nov 14 18:01:56 laptop kernel: usb-storage: Command TEST_UNIT_READY (6 bytes)
Nov 14 18:01:56 laptop kernel: usb-storage:  00 00 00 00 00 00
Nov 14 18:01:56 laptop kernel: usb-storage: usb_stor_ctrl_transfer: rq=00 rqtype=21 value=0000 index=00 len=6
Nov 14 18:01:56 laptop kernel: usb-storage: Status code 0; transferred 6/6
Nov 14 18:01:56 laptop kernel: usb-storage: -- transfer complete
Nov 14 18:01:56 laptop kernel: usb-storage: Call to usb_stor_ctrl_transfer() returned 0
Nov 14 18:01:56 laptop kernel: usb-storage: -- CB transport device requiring auto-sense
Nov 14 18:01:56 laptop kernel: usb-storage: Issuing auto-REQUEST_SENSE
Nov 14 18:01:56 laptop kernel: usb-storage: usb_stor_ctrl_transfer: rq=00 rqtype=21 value=0000 index=00 len=6
Nov 14 18:01:56 laptop kernel: usb-storage: Status code 0; transferred 6/6
Nov 14 18:01:56 laptop kernel: usb-storage: -- transfer complete
Nov 14 18:01:56 laptop kernel: usb-storage: Call to usb_stor_ctrl_transfer() returned 0
Nov 14 18:01:56 laptop kernel: usb-storage: usb_stor_bulk_transfer_buf: xfer 18 bytes
Nov 14 18:01:56 laptop kernel: usb-storage: Status code 0; transferred 18/18
Nov 14 18:01:56 laptop kernel: usb-storage: -- transfer complete
Nov 14 18:01:56 laptop kernel: usb-storage: CB data stage result is 0x0
Nov 14 18:01:56 laptop kernel: usb-storage: -- Result from auto-sense is 0
Nov 14 18:01:56 laptop kernel: usb-storage: -- code: 0x70, key: 0x0, ASC: 0x0, ASCQ: 0x0
Nov 14 18:01:56 laptop kernel: usb-storage: No Sense: No additional sense information
Nov 14 18:01:56 laptop kernel: usb-storage: scsi cmd done, result=0x0
Nov 14 18:01:56 laptop kernel: usb-storage: *** thread sleeping.
Nov 14 18:01:56 laptop kernel: usb-storage: queuecommand called
Nov 14 18:01:56 laptop kernel: usb-storage: *** thread awakened.
Nov 14 18:01:56 laptop kernel: usb-storage: Command READ_CAPACITY (10 bytes)
Nov 14 18:01:56 laptop kernel: usb-storage:  25 00 00 00 00 00 00 00 00 00
Nov 14 18:01:56 laptop kernel: usb-storage: usb_stor_ctrl_transfer: rq=00 rqtype=21 value=0000 index=00 len=10
Nov 14 18:01:56 laptop kernel: usb-storage: Status code 0; transferred 10/10
Nov 14 18:01:56 laptop kernel: usb-storage: -- transfer complete
Nov 14 18:01:56 laptop kernel: usb-storage: Call to usb_stor_ctrl_transfer() returned 0
Nov 14 18:01:56 laptop kernel: usb-storage: usb_stor_bulk_transfer_buf: xfer 8 bytes
Nov 14 18:01:56 laptop kernel: usb-storage: Status code 0; transferred 8/8
Nov 14 18:01:56 laptop kernel: usb-storage: -- transfer complete
Nov 14 18:01:56 laptop kernel: usb-storage: CB data stage result is 0x0
Nov 14 18:01:56 laptop kernel: usb-storage: -- CB transport device requiring auto-sense
Nov 14 18:01:56 laptop kernel: usb-storage: Issuing auto-REQUEST_SENSE
Nov 14 18:01:56 laptop kernel: usb-storage: usb_stor_ctrl_transfer: rq=00 rqtype=21 value=0000 index=00 len=6
Nov 14 18:01:56 laptop kernel: usb-storage: Status code 0; transferred 6/6
Nov 14 18:01:56 laptop kernel: usb-storage: -- transfer complete
Nov 14 18:01:56 laptop kernel: usb-storage: Call to usb_stor_ctrl_transfer() returned 0
Nov 14 18:01:56 laptop kernel: usb-storage: usb_stor_bulk_transfer_buf: xfer 18 bytes
Nov 14 18:01:56 laptop kernel: usb-storage: Status code 0; transferred 18/18
Nov 14 18:01:56 laptop kernel: usb-storage: -- transfer complete
Nov 14 18:01:56 laptop kernel: usb-storage: CB data stage result is 0x0
Nov 14 18:01:56 laptop kernel: usb-storage: -- Result from auto-sense is 0
Nov 14 18:01:56 laptop kernel: usb-storage: -- code: 0x70, key: 0x0, ASC: 0x0, ASCQ: 0x0
Nov 14 18:01:56 laptop kernel: usb-storage: No Sense: No additional sense information
Nov 14 18:01:56 laptop kernel: usb-storage: scsi cmd done, result=0x0
Nov 14 18:01:56 laptop kernel: usb-storage: *** thread sleeping.
Nov 14 18:01:56 laptop kernel: usb-storage: queuecommand called
Nov 14 18:01:56 laptop kernel: usb-storage: *** thread awakened.
Nov 14 18:01:56 laptop kernel: usb-storage: Command TEST_UNIT_READY (6 bytes)
Nov 14 18:01:56 laptop kernel: usb-storage:  00 00 00 00 00 00
Nov 14 18:01:56 laptop kernel: usb-storage: usb_stor_ctrl_transfer: rq=00 rqtype=21 value=0000 index=00 len=6
Nov 14 18:01:56 laptop kernel: usb-storage: Status code 0; transferred 6/6
Nov 14 18:01:56 laptop kernel: usb-storage: -- transfer complete
Nov 14 18:01:56 laptop kernel: usb-storage: Call to usb_stor_ctrl_transfer() returned 0
Nov 14 18:01:56 laptop kernel: usb-storage: -- CB transport device requiring auto-sense
Nov 14 18:01:56 laptop kernel: usb-storage: Issuing auto-REQUEST_SENSE
Nov 14 18:01:56 laptop kernel: usb-storage: usb_stor_ctrl_transfer: rq=00 rqtype=21 value=0000 index=00 len=6
Nov 14 18:01:56 laptop kernel: usb-storage: Status code 0; transferred 6/6
Nov 14 18:01:56 laptop kernel: usb-storage: -- transfer complete
Nov 14 18:01:57 laptop kernel: usb-storage: Call to usb_stor_ctrl_transfer() returned 0
Nov 14 18:01:57 laptop kernel: usb-storage: usb_stor_bulk_transfer_buf: xfer 18 bytes
Nov 14 18:01:57 laptop kernel: usb-storage: Status code 0; transferred 18/18
Nov 14 18:01:57 laptop kernel: usb-storage: -- transfer complete
Nov 14 18:01:57 laptop kernel: usb-storage: CB data stage result is 0x0
Nov 14 18:01:57 laptop kernel: usb-storage: -- Result from auto-sense is 0
Nov 14 18:01:57 laptop kernel: usb-storage: -- code: 0x70, key: 0x0, ASC: 0x0, ASCQ: 0x0
Nov 14 18:01:57 laptop kernel: usb-storage: No Sense: No additional sense information
Nov 14 18:01:57 laptop kernel: usb-storage: scsi cmd done, result=0x0
Nov 14 18:01:57 laptop kernel: usb-storage: *** thread sleeping.
Nov 14 18:01:57 laptop kernel: usb-storage: queuecommand called
Nov 14 18:01:57 laptop kernel: usb-storage: *** thread awakened.
Nov 14 18:01:57 laptop kernel: usb-storage: Command ALLOW_MEDIUM_REMOVAL (6 bytes)
Nov 14 18:01:57 laptop kernel: usb-storage:  1e 00 00 00 01 00
Nov 14 18:01:57 laptop kernel: usb-storage: usb_stor_ctrl_transfer: rq=00 rqtype=21 value=0000 index=00 len=6
Nov 14 18:01:57 laptop kernel: usb-storage: Status code -32; transferred 6/6
Nov 14 18:01:57 laptop kernel: usb-storage: -- stall on control pipe
Nov 14 18:01:57 laptop kernel: usb-storage: Call to usb_stor_ctrl_transfer() returned 2
Nov 14 18:01:57 laptop kernel: usb-storage: -- CB transport device requiring auto-sense
Nov 14 18:01:57 laptop kernel: usb-storage: -- transport indicates command failure
Nov 14 18:01:57 laptop kernel: usb-storage: Issuing auto-REQUEST_SENSE
Nov 14 18:01:57 laptop kernel: usb-storage: usb_stor_ctrl_transfer: rq=00 rqtype=21 value=0000 index=00 len=6
Nov 14 18:01:57 laptop kernel: usb-storage: Status code 0; transferred 6/6
Nov 14 18:01:57 laptop kernel: usb-storage: -- transfer complete
Nov 14 18:01:57 laptop kernel: usb-storage: Call to usb_stor_ctrl_transfer() returned 0
Nov 14 18:01:57 laptop kernel: usb-storage: usb_stor_bulk_transfer_buf: xfer 18 bytes
Nov 14 18:01:57 laptop kernel: usb-storage: Status code 0; transferred 18/18
Nov 14 18:01:57 laptop kernel: usb-storage: -- transfer complete
Nov 14 18:01:57 laptop kernel: usb-storage: CB data stage result is 0x0
Nov 14 18:01:57 laptop kernel: usb-storage: -- Result from auto-sense is 0
Nov 14 18:01:57 laptop kernel: usb-storage: -- code: 0x70, key: 0x5, ASC: 0x20, ASCQ: 0x0
Nov 14 18:01:57 laptop kernel: usb-storage: Illegal Request: Invalid command operation code
Nov 14 18:01:57 laptop kernel: usb-storage: scsi cmd done, result=0x2
Nov 14 18:01:57 laptop kernel: usb-storage: *** thread sleeping.
Nov 14 18:01:57 laptop kernel: usb-storage: *** thread awakened.
Nov 14 18:01:57 laptop kernel: usb-storage: Command READ_10 (10 bytes)
Nov 14 18:01:57 laptop kernel: usb-storage:  28 00 00 00 00 00 00 00 08 00
Nov 14 18:01:57 laptop kernel: usb-storage: usb_stor_ctrl_transfer: rq=00 rqtype=21 value=0000 index=00 len=10
Nov 14 18:01:57 laptop kernel: usb-storage: Status code 0; transferred 10/10
Nov 14 18:01:57 laptop kernel: usb-storage: -- transfer complete
Nov 14 18:01:57 laptop kernel: usb-storage: Call to usb_stor_ctrl_transfer() returned 0
Nov 14 18:01:57 laptop kernel: usb-storage: usb_stor_bulk_transfer_sglist: xfer 4096 bytes, 1 entries
Nov 14 18:01:57 laptop kernel: usb-storage: Status code 0; transferred 4096/4096
Nov 14 18:01:57 laptop kernel: usb-storage: -- transfer complete
Nov 14 18:01:57 laptop kernel: usb-storage: CB data stage result is 0x0
Nov 14 18:01:57 laptop kernel: usb-storage: -- CB transport device requiring auto-sense
Nov 14 18:01:57 laptop kernel: usb-storage: Issuing auto-REQUEST_SENSE
Nov 14 18:01:57 laptop kernel: usb-storage: usb_stor_ctrl_transfer: rq=00 rqtype=21 value=0000 index=00 len=6
Nov 14 18:01:57 laptop kernel: usb-storage: Status code 0; transferred 6/6
Nov 14 18:01:57 laptop kernel: usb-storage: -- transfer complete
Nov 14 18:01:57 laptop kernel: usb-storage: Call to usb_stor_ctrl_transfer() returned 0
Nov 14 18:01:57 laptop kernel: usb-storage: usb_stor_bulk_transfer_buf: xfer 18 bytes
Nov 14 18:01:57 laptop kernel: usb-storage: Status code 0; transferred 18/18
Nov 14 18:01:57 laptop kernel: usb-storage: -- transfer complete
Nov 14 18:01:57 laptop kernel: usb-storage: CB data stage result is 0x0
Nov 14 18:01:57 laptop kernel: usb-storage: -- Result from auto-sense is 0
Nov 14 18:01:57 laptop kernel: usb-storage: -- code: 0x70, key: 0x0, ASC: 0x0, ASCQ: 0x0
Nov 14 18:01:57 laptop kernel: usb-storage: No Sense: No additional sense information
Nov 14 18:01:57 laptop kernel: usb-storage: scsi cmd done, result=0x0
Nov 14 18:01:57 laptop kernel: usb-storage: *** thread sleeping.
Nov 14 18:01:57 laptop kernel: usb-storage: queuecommand called
Nov 14 18:01:57 laptop kernel: usb-storage: *** thread awakened.
Nov 14 18:01:57 laptop kernel: usb-storage: Bad target number (1:0)
Nov 14 18:01:57 laptop kernel: usb-storage: scsi cmd done, result=0x40000
Nov 14 18:01:57 laptop kernel: usb-storage: *** thread sleeping.
Nov 14 18:01:57 laptop kernel: usb-storage: queuecommand called
Nov 14 18:01:57 laptop kernel: usb-storage: *** thread awakened.
Nov 14 18:01:57 laptop kernel: usb-storage: Bad target number (2:0)
Nov 14 18:01:57 laptop kernel: usb-storage: scsi cmd done, result=0x40000
Nov 14 18:01:57 laptop kernel: usb-storage: *** thread sleeping.
Nov 14 18:01:57 laptop kernel: usb-storage: queuecommand called
Nov 14 18:01:57 laptop kernel: usb-storage: *** thread awakened.
Nov 14 18:01:57 laptop kernel: usb-storage: Bad target number (3:0)
Nov 14 18:01:57 laptop kernel: usb-storage: scsi cmd done, result=0x40000
Nov 14 18:01:57 laptop kernel: usb-storage: *** thread sleeping.
Nov 14 18:01:57 laptop kernel: usb-storage: queuecommand called
Nov 14 18:01:57 laptop kernel: usb-storage: *** thread awakened.
Nov 14 18:01:57 laptop kernel: usb-storage: Bad target number (4:0)
Nov 14 18:01:57 laptop kernel: usb-storage: scsi cmd done, result=0x40000
Nov 14 18:01:57 laptop kernel: usb-storage: *** thread sleeping.
Nov 14 18:01:57 laptop kernel: usb-storage: queuecommand called
Nov 14 18:01:57 laptop kernel: usb-storage: *** thread awakened.
Nov 14 18:01:57 laptop kernel: usb-storage: Bad target number (5:0)
Nov 14 18:01:57 laptop kernel: usb-storage: scsi cmd done, result=0x40000
Nov 14 18:01:57 laptop kernel: usb-storage: *** thread sleeping.
Nov 14 18:01:57 laptop kernel: usb-storage: queuecommand called
Nov 14 18:01:57 laptop kernel: usb-storage: *** thread awakened.
Nov 14 18:01:57 laptop kernel: usb-storage: Bad target number (6:0)
Nov 14 18:01:57 laptop kernel: usb-storage: scsi cmd done, result=0x40000
Nov 14 18:01:57 laptop kernel: usb-storage: *** thread sleeping.
Nov 14 18:01:57 laptop kernel: usb-storage: queuecommand called
Nov 14 18:01:57 laptop kernel: usb-storage: *** thread awakened.
Nov 14 18:01:57 laptop kernel: usb-storage: Bad target number (7:0)
Nov 14 18:01:57 laptop kernel: usb-storage: scsi cmd done, result=0x40000
Nov 14 18:01:57 laptop kernel: usb-storage: *** thread sleeping.
Nov 14 18:01:57 laptop kernel: WARNING: USB Mass Storage data integrity not assured
Nov 14 18:01:57 laptop kernel: USB Mass Storage device found at 3
Nov 14 18:02:11 laptop patman: NOTE attach COMPLETED NOTE
#9 lore raw

I presume your testing included mount, read, write, and umount?

I'm okay with the patch. It could use some more comments, but that's not really necessary.

Matt

Quoted 207 lines · Patrick Mansfield

I went ahead and tested the patch with a Sony / Sony DSC on my laptop with no problems.

James, Matthew, etc. - are you OK with the patch?

Here's usb storage debug output on attach of the device, note the lack of any MODE SENSE:

Nov 14 18:01:47 laptop patman: NOTE attaching NOTE
Nov 14 18:01:56 laptop kernel: usb-storage: USB Mass Storage device detected
Nov 14 18:01:56 laptop kernel: usb-storage: act_altsetting is 0, id_index is 25
Nov 14 18:01:56 laptop kernel: usb-storage: -- associate_dev
Nov 14 18:01:56 laptop kernel: usb-storage: Vendor: Sony
Nov 14 18:01:56 laptop kernel: usb-storage: Product: DSC-S30/S70/S75/505V/F505/F707/F717/P8
Nov 14 18:01:56 laptop kernel: usb-storage: Transport: Control/Bulk
Nov 14 18:01:56 laptop kernel: usb-storage: Protocol: Transparent SCSI
Nov 14 18:01:56 laptop kernel: usb-storage: Endpoints: In: 0xca8bb280 Out: 0xca8bb294 Int: 0xca8bb2a8 (Period 255)
Nov 14 18:01:56 laptop kernel: usb-storage: *** thread sleeping.
Nov 14 18:01:56 laptop kernel: usb-storage: queuecommand called
Nov 14 18:01:56 laptop kernel: usb-storage: *** thread awakened.
Nov 14 18:01:56 laptop kernel: usb-storage: Command INQUIRY (6 bytes)
Nov 14 18:01:56 laptop kernel: usb-storage:  12 00 00 00 24 00
Nov 14 18:01:56 laptop kernel: usb-storage: usb_stor_ctrl_transfer: rq=00 rqtype=21 value=0000 index=00 len=6
Nov 14 18:01:56 laptop kernel: usb-storage: Status code 0; transferred 6/6
Nov 14 18:01:56 laptop kernel: usb-storage: -- transfer complete
Nov 14 18:01:56 laptop kernel: usb-storage: Call to usb_stor_ctrl_transfer() returned 0
Nov 14 18:01:56 laptop kernel: usb-storage: usb_stor_bulk_transfer_buf: xfer 36 bytes
Nov 14 18:01:56 laptop kernel: usb-storage: Status code 0; transferred 36/36
Nov 14 18:01:56 laptop kernel: usb-storage: -- transfer complete
Nov 14 18:01:56 laptop kernel: usb-storage: CB data stage result is 0x0
Nov 14 18:01:56 laptop kernel: usb-storage: -- CB transport device requiring auto-sense
Nov 14 18:01:56 laptop kernel: usb-storage: Issuing auto-REQUEST_SENSE
Nov 14 18:01:56 laptop kernel: usb-storage: usb_stor_ctrl_transfer: rq=00 rqtype=21 value=0000 index=00 len=6
Nov 14 18:01:56 laptop kernel: usb-storage: Status code 0; transferred 6/6
Nov 14 18:01:56 laptop kernel: usb-storage: -- transfer complete
Nov 14 18:01:56 laptop kernel: usb-storage: Call to usb_stor_ctrl_transfer() returned 0
Nov 14 18:01:56 laptop kernel: usb-storage: usb_stor_bulk_transfer_buf: xfer 18 bytes
Nov 14 18:01:56 laptop kernel: usb-storage: Status code 0; transferred 18/18
Nov 14 18:01:56 laptop kernel: usb-storage: -- transfer complete
Nov 14 18:01:56 laptop kernel: usb-storage: CB data stage result is 0x0
Nov 14 18:01:56 laptop kernel: usb-storage: -- Result from auto-sense is 0
Nov 14 18:01:56 laptop kernel: usb-storage: -- code: 0x70, key: 0x0, ASC: 0x0, ASCQ: 0x0
Nov 14 18:01:56 laptop kernel: usb-storage: No Sense: No additional sense information
Nov 14 18:01:56 laptop kernel: usb-storage: Fixing INQUIRY data to show SCSI rev 2 - was 0
Nov 14 18:01:56 laptop kernel: usb-storage: scsi cmd done, result=0x0
Nov 14 18:01:56 laptop kernel: usb-storage: *** thread sleeping.
Nov 14 18:01:56 laptop kernel: usb-storage: queuecommand called
Nov 14 18:01:56 laptop kernel: usb-storage: *** thread awakened.
Nov 14 18:01:56 laptop kernel: usb-storage: Command TEST_UNIT_READY (6 bytes)
Nov 14 18:01:56 laptop kernel: usb-storage:  00 00 00 00 00 00
Nov 14 18:01:56 laptop kernel: usb-storage: usb_stor_ctrl_transfer: rq=00 rqtype=21 value=0000 index=00 len=6
Nov 14 18:01:56 laptop kernel: usb-storage: Status code 0; transferred 6/6
Nov 14 18:01:56 laptop kernel: usb-storage: -- transfer complete
Nov 14 18:01:56 laptop kernel: usb-storage: Call to usb_stor_ctrl_transfer() returned 0
Nov 14 18:01:56 laptop kernel: usb-storage: -- CB transport device requiring auto-sense
Nov 14 18:01:56 laptop kernel: usb-storage: Issuing auto-REQUEST_SENSE
Nov 14 18:01:56 laptop kernel: usb-storage: usb_stor_ctrl_transfer: rq=00 rqtype=21 value=0000 index=00 len=6
Nov 14 18:01:56 laptop kernel: usb-storage: Status code 0; transferred 6/6
Nov 14 18:01:56 laptop kernel: usb-storage: -- transfer complete
Nov 14 18:01:56 laptop kernel: usb-storage: Call to usb_stor_ctrl_transfer() returned 0
Nov 14 18:01:56 laptop kernel: usb-storage: usb_stor_bulk_transfer_buf: xfer 18 bytes
Nov 14 18:01:56 laptop kernel: usb-storage: Status code 0; transferred 18/18
Nov 14 18:01:56 laptop kernel: usb-storage: -- transfer complete
Nov 14 18:01:56 laptop kernel: usb-storage: CB data stage result is 0x0
Nov 14 18:01:56 laptop kernel: usb-storage: -- Result from auto-sense is 0
Nov 14 18:01:56 laptop kernel: usb-storage: -- code: 0x70, key: 0x0, ASC: 0x0, ASCQ: 0x0
Nov 14 18:01:56 laptop kernel: usb-storage: No Sense: No additional sense information
Nov 14 18:01:56 laptop kernel: usb-storage: scsi cmd done, result=0x0
Nov 14 18:01:56 laptop kernel: usb-storage: *** thread sleeping.
Nov 14 18:01:56 laptop kernel: usb-storage: queuecommand called
Nov 14 18:01:56 laptop kernel: usb-storage: *** thread awakened.
Nov 14 18:01:56 laptop kernel: usb-storage: Command READ_CAPACITY (10 bytes)
Nov 14 18:01:56 laptop kernel: usb-storage:  25 00 00 00 00 00 00 00 00 00
Nov 14 18:01:56 laptop kernel: usb-storage: usb_stor_ctrl_transfer: rq=00 rqtype=21 value=0000 index=00 len=10
Nov 14 18:01:56 laptop kernel: usb-storage: Status code 0; transferred 10/10
Nov 14 18:01:56 laptop kernel: usb-storage: -- transfer complete
Nov 14 18:01:56 laptop kernel: usb-storage: Call to usb_stor_ctrl_transfer() returned 0
Nov 14 18:01:56 laptop kernel: usb-storage: usb_stor_bulk_transfer_buf: xfer 8 bytes
Nov 14 18:01:56 laptop kernel: usb-storage: Status code 0; transferred 8/8
Nov 14 18:01:56 laptop kernel: usb-storage: -- transfer complete
Nov 14 18:01:56 laptop kernel: usb-storage: CB data stage result is 0x0
Nov 14 18:01:56 laptop kernel: usb-storage: -- CB transport device requiring auto-sense
Nov 14 18:01:56 laptop kernel: usb-storage: Issuing auto-REQUEST_SENSE
Nov 14 18:01:56 laptop kernel: usb-storage: usb_stor_ctrl_transfer: rq=00 rqtype=21 value=0000 index=00 len=6
Nov 14 18:01:56 laptop kernel: usb-storage: Status code 0; transferred 6/6
Nov 14 18:01:56 laptop kernel: usb-storage: -- transfer complete
Nov 14 18:01:56 laptop kernel: usb-storage: Call to usb_stor_ctrl_transfer() returned 0
Nov 14 18:01:56 laptop kernel: usb-storage: usb_stor_bulk_transfer_buf: xfer 18 bytes
Nov 14 18:01:56 laptop kernel: usb-storage: Status code 0; transferred 18/18
Nov 14 18:01:56 laptop kernel: usb-storage: -- transfer complete
Nov 14 18:01:56 laptop kernel: usb-storage: CB data stage result is 0x0
Nov 14 18:01:56 laptop kernel: usb-storage: -- Result from auto-sense is 0
Nov 14 18:01:56 laptop kernel: usb-storage: -- code: 0x70, key: 0x0, ASC: 0x0, ASCQ: 0x0
Nov 14 18:01:56 laptop kernel: usb-storage: No Sense: No additional sense information
Nov 14 18:01:56 laptop kernel: usb-storage: scsi cmd done, result=0x0
Nov 14 18:01:56 laptop kernel: usb-storage: *** thread sleeping.
Nov 14 18:01:56 laptop kernel: usb-storage: queuecommand called
Nov 14 18:01:56 laptop kernel: usb-storage: *** thread awakened.
Nov 14 18:01:56 laptop kernel: usb-storage: Command TEST_UNIT_READY (6 bytes)
Nov 14 18:01:56 laptop kernel: usb-storage:  00 00 00 00 00 00
Nov 14 18:01:56 laptop kernel: usb-storage: usb_stor_ctrl_transfer: rq=00 rqtype=21 value=0000 index=00 len=6
Nov 14 18:01:56 laptop kernel: usb-storage: Status code 0; transferred 6/6
Nov 14 18:01:56 laptop kernel: usb-storage: -- transfer complete
Nov 14 18:01:56 laptop kernel: usb-storage: Call to usb_stor_ctrl_transfer() returned 0
Nov 14 18:01:56 laptop kernel: usb-storage: -- CB transport device requiring auto-sense
Nov 14 18:01:56 laptop kernel: usb-storage: Issuing auto-REQUEST_SENSE
Nov 14 18:01:56 laptop kernel: usb-storage: usb_stor_ctrl_transfer: rq=00 rqtype=21 value=0000 index=00 len=6
Nov 14 18:01:56 laptop kernel: usb-storage: Status code 0; transferred 6/6
Nov 14 18:01:56 laptop kernel: usb-storage: -- transfer complete
Nov 14 18:01:57 laptop kernel: usb-storage: Call to usb_stor_ctrl_transfer() returned 0
Nov 14 18:01:57 laptop kernel: usb-storage: usb_stor_bulk_transfer_buf: xfer 18 bytes
Nov 14 18:01:57 laptop kernel: usb-storage: Status code 0; transferred 18/18
Nov 14 18:01:57 laptop kernel: usb-storage: -- transfer complete
Nov 14 18:01:57 laptop kernel: usb-storage: CB data stage result is 0x0
Nov 14 18:01:57 laptop kernel: usb-storage: -- Result from auto-sense is 0
Nov 14 18:01:57 laptop kernel: usb-storage: -- code: 0x70, key: 0x0, ASC: 0x0, ASCQ: 0x0
Nov 14 18:01:57 laptop kernel: usb-storage: No Sense: No additional sense information
Nov 14 18:01:57 laptop kernel: usb-storage: scsi cmd done, result=0x0
Nov 14 18:01:57 laptop kernel: usb-storage: *** thread sleeping.
Nov 14 18:01:57 laptop kernel: usb-storage: queuecommand called
Nov 14 18:01:57 laptop kernel: usb-storage: *** thread awakened.
Nov 14 18:01:57 laptop kernel: usb-storage: Command ALLOW_MEDIUM_REMOVAL (6 bytes)
Nov 14 18:01:57 laptop kernel: usb-storage:  1e 00 00 00 01 00
Nov 14 18:01:57 laptop kernel: usb-storage: usb_stor_ctrl_transfer: rq=00 rqtype=21 value=0000 index=00 len=6
Nov 14 18:01:57 laptop kernel: usb-storage: Status code -32; transferred 6/6
Nov 14 18:01:57 laptop kernel: usb-storage: -- stall on control pipe
Nov 14 18:01:57 laptop kernel: usb-storage: Call to usb_stor_ctrl_transfer() returned 2
Nov 14 18:01:57 laptop kernel: usb-storage: -- CB transport device requiring auto-sense
Nov 14 18:01:57 laptop kernel: usb-storage: -- transport indicates command failure
Nov 14 18:01:57 laptop kernel: usb-storage: Issuing auto-REQUEST_SENSE
Nov 14 18:01:57 laptop kernel: usb-storage: usb_stor_ctrl_transfer: rq=00 rqtype=21 value=0000 index=00 len=6
Nov 14 18:01:57 laptop kernel: usb-storage: Status code 0; transferred 6/6
Nov 14 18:01:57 laptop kernel: usb-storage: -- transfer complete
Nov 14 18:01:57 laptop kernel: usb-storage: Call to usb_stor_ctrl_transfer() returned 0
Nov 14 18:01:57 laptop kernel: usb-storage: usb_stor_bulk_transfer_buf: xfer 18 bytes
Nov 14 18:01:57 laptop kernel: usb-storage: Status code 0; transferred 18/18
Nov 14 18:01:57 laptop kernel: usb-storage: -- transfer complete
Nov 14 18:01:57 laptop kernel: usb-storage: CB data stage result is 0x0
Nov 14 18:01:57 laptop kernel: usb-storage: -- Result from auto-sense is 0
Nov 14 18:01:57 laptop kernel: usb-storage: -- code: 0x70, key: 0x5, ASC: 0x20, ASCQ: 0x0
Nov 14 18:01:57 laptop kernel: usb-storage: Illegal Request: Invalid command operation code
Nov 14 18:01:57 laptop kernel: usb-storage: scsi cmd done, result=0x2
Nov 14 18:01:57 laptop kernel: usb-storage: *** thread sleeping.
Nov 14 18:01:57 laptop kernel: usb-storage: *** thread awakened.
Nov 14 18:01:57 laptop kernel: usb-storage: Command READ_10 (10 bytes)
Nov 14 18:01:57 laptop kernel: usb-storage:  28 00 00 00 00 00 00 00 08 00
Nov 14 18:01:57 laptop kernel: usb-storage: usb_stor_ctrl_transfer: rq=00 rqtype=21 value=0000 index=00 len=10
Nov 14 18:01:57 laptop kernel: usb-storage: Status code 0; transferred 10/10
Nov 14 18:01:57 laptop kernel: usb-storage: -- transfer complete
Nov 14 18:01:57 laptop kernel: usb-storage: Call to usb_stor_ctrl_transfer() returned 0
Nov 14 18:01:57 laptop kernel: usb-storage: usb_stor_bulk_transfer_sglist: xfer 4096 bytes, 1 entries
Nov 14 18:01:57 laptop kernel: usb-storage: Status code 0; transferred 4096/4096
Nov 14 18:01:57 laptop kernel: usb-storage: -- transfer complete
Nov 14 18:01:57 laptop kernel: usb-storage: CB data stage result is 0x0
Nov 14 18:01:57 laptop kernel: usb-storage: -- CB transport device requiring auto-sense
Nov 14 18:01:57 laptop kernel: usb-storage: Issuing auto-REQUEST_SENSE
Nov 14 18:01:57 laptop kernel: usb-storage: usb_stor_ctrl_transfer: rq=00 rqtype=21 value=0000 index=00 len=6
Nov 14 18:01:57 laptop kernel: usb-storage: Status code 0; transferred 6/6
Nov 14 18:01:57 laptop kernel: usb-storage: -- transfer complete
Nov 14 18:01:57 laptop kernel: usb-storage: Call to usb_stor_ctrl_transfer() returned 0
Nov 14 18:01:57 laptop kernel: usb-storage: usb_stor_bulk_transfer_buf: xfer 18 bytes
Nov 14 18:01:57 laptop kernel: usb-storage: Status code 0; transferred 18/18
Nov 14 18:01:57 laptop kernel: usb-storage: -- transfer complete
Nov 14 18:01:57 laptop kernel: usb-storage: CB data stage result is 0x0
Nov 14 18:01:57 laptop kernel: usb-storage: -- Result from auto-sense is 0
Nov 14 18:01:57 laptop kernel: usb-storage: -- code: 0x70, key: 0x0, ASC: 0x0, ASCQ: 0x0
Nov 14 18:01:57 laptop kernel: usb-storage: No Sense: No additional sense information
Nov 14 18:01:57 laptop kernel: usb-storage: scsi cmd done, result=0x0
Nov 14 18:01:57 laptop kernel: usb-storage: *** thread sleeping.
Nov 14 18:01:57 laptop kernel: usb-storage: queuecommand called
Nov 14 18:01:57 laptop kernel: usb-storage: *** thread awakened.
Nov 14 18:01:57 laptop kernel: usb-storage: Bad target number (1:0)
Nov 14 18:01:57 laptop kernel: usb-storage: scsi cmd done, result=0x40000
Nov 14 18:01:57 laptop kernel: usb-storage: *** thread sleeping.
Nov 14 18:01:57 laptop kernel: usb-storage: queuecommand called
Nov 14 18:01:57 laptop kernel: usb-storage: *** thread awakened.
Nov 14 18:01:57 laptop kernel: usb-storage: Bad target number (2:0)
Nov 14 18:01:57 laptop kernel: usb-storage: scsi cmd done, result=0x40000
Nov 14 18:01:57 laptop kernel: usb-storage: *** thread sleeping.
Nov 14 18:01:57 laptop kernel: usb-storage: queuecommand called
Nov 14 18:01:57 laptop kernel: usb-storage: *** thread awakened.
Nov 14 18:01:57 laptop kernel: usb-storage: Bad target number (3:0)
Nov 14 18:01:57 laptop kernel: usb-storage: scsi cmd done, result=0x40000
Nov 14 18:01:57 laptop kernel: usb-storage: *** thread sleeping.
Nov 14 18:01:57 laptop kernel: usb-storage: queuecommand called
Nov 14 18:01:57 laptop kernel: usb-storage: *** thread awakened.
Nov 14 18:01:57 laptop kernel: usb-storage: Bad target number (4:0)
Nov 14 18:01:57 laptop kernel: usb-storage: scsi cmd done, result=0x40000
Nov 14 18:01:57 laptop kernel: usb-storage: *** thread sleeping.
Nov 14 18:01:57 laptop kernel: usb-storage: queuecommand called
Nov 14 18:01:57 laptop kernel: usb-storage: *** thread awakened.
Nov 14 18:01:57 laptop kernel: usb-storage: Bad target number (5:0)
Nov 14 18:01:57 laptop kernel: usb-storage: scsi cmd done, result=0x40000
Nov 14 18:01:57 laptop kernel: usb-storage: *** thread sleeping.
Nov 14 18:01:57 laptop kernel: usb-storage: queuecommand called
Nov 14 18:01:57 laptop kernel: usb-storage: *** thread awakened.
Nov 14 18:01:57 laptop kernel: usb-storage: Bad target number (6:0)
Nov 14 18:01:57 laptop kernel: usb-storage: scsi cmd done, result=0x40000
Nov 14 18:01:57 laptop kernel: usb-storage: *** thread sleeping.
Nov 14 18:01:57 laptop kernel: usb-storage: queuecommand called
Nov 14 18:01:57 laptop kernel: usb-storage: *** thread awakened.
Nov 14 18:01:57 laptop kernel: usb-storage: Bad target number (7:0)
Nov 14 18:01:57 laptop kernel: usb-storage: scsi cmd done, result=0x40000
Nov 14 18:01:57 laptop kernel: usb-storage: *** thread sleeping.
Nov 14 18:01:57 laptop kernel: WARNING: USB Mass Storage data integrity not assured
Nov 14 18:01:57 laptop kernel: USB Mass Storage device found at 3
Nov 14 18:02:11 laptop patman: NOTE attach COMPLETED NOTE
Signature · 6 lines
Matthew Dharm                              Home: [email protected] 
Maintainer, Linux USB Mass Storage Driver

Somebody call an exorcist!
					-- Dust Puppy
User Friendly, 5/16/1998
#10 lore raw
Quoted 1 line · Matthew Dharm

I presume your testing included mount, read, write, and umount?

Yes, with no problems.

I almost did not test mount due to build problems with vfat (I should have rebuilt the kernel before modules after enabling and building vfat as module), and was told write's to the device did not work with 2.4 but they worked fine for me.

Quoted 2 lines

I'm okay with the patch. It could use some more comments, but that's not really necessary.

We ought to change the define names to make more sense.

-- Patrick Mansfield

#11 lore raw
In reply to Patrick Mansfield

A clarification question: Are you going to merge the patch via the linux-scsi tree, or should I try to get it merged via the linux-usb tree?

Matt

Quoted 207 lines · Patrick Mansfield

I went ahead and tested the patch with a Sony / Sony DSC on my laptop with no problems.

James, Matthew, etc. - are you OK with the patch?

Here's usb storage debug output on attach of the device, note the lack of any MODE SENSE:

Nov 14 18:01:47 laptop patman: NOTE attaching NOTE
Nov 14 18:01:56 laptop kernel: usb-storage: USB Mass Storage device detected
Nov 14 18:01:56 laptop kernel: usb-storage: act_altsetting is 0, id_index is 25
Nov 14 18:01:56 laptop kernel: usb-storage: -- associate_dev
Nov 14 18:01:56 laptop kernel: usb-storage: Vendor: Sony
Nov 14 18:01:56 laptop kernel: usb-storage: Product: DSC-S30/S70/S75/505V/F505/F707/F717/P8
Nov 14 18:01:56 laptop kernel: usb-storage: Transport: Control/Bulk
Nov 14 18:01:56 laptop kernel: usb-storage: Protocol: Transparent SCSI
Nov 14 18:01:56 laptop kernel: usb-storage: Endpoints: In: 0xca8bb280 Out: 0xca8bb294 Int: 0xca8bb2a8 (Period 255)
Nov 14 18:01:56 laptop kernel: usb-storage: *** thread sleeping.
Nov 14 18:01:56 laptop kernel: usb-storage: queuecommand called
Nov 14 18:01:56 laptop kernel: usb-storage: *** thread awakened.
Nov 14 18:01:56 laptop kernel: usb-storage: Command INQUIRY (6 bytes)
Nov 14 18:01:56 laptop kernel: usb-storage:  12 00 00 00 24 00
Nov 14 18:01:56 laptop kernel: usb-storage: usb_stor_ctrl_transfer: rq=00 rqtype=21 value=0000 index=00 len=6
Nov 14 18:01:56 laptop kernel: usb-storage: Status code 0; transferred 6/6
Nov 14 18:01:56 laptop kernel: usb-storage: -- transfer complete
Nov 14 18:01:56 laptop kernel: usb-storage: Call to usb_stor_ctrl_transfer() returned 0
Nov 14 18:01:56 laptop kernel: usb-storage: usb_stor_bulk_transfer_buf: xfer 36 bytes
Nov 14 18:01:56 laptop kernel: usb-storage: Status code 0; transferred 36/36
Nov 14 18:01:56 laptop kernel: usb-storage: -- transfer complete
Nov 14 18:01:56 laptop kernel: usb-storage: CB data stage result is 0x0
Nov 14 18:01:56 laptop kernel: usb-storage: -- CB transport device requiring auto-sense
Nov 14 18:01:56 laptop kernel: usb-storage: Issuing auto-REQUEST_SENSE
Nov 14 18:01:56 laptop kernel: usb-storage: usb_stor_ctrl_transfer: rq=00 rqtype=21 value=0000 index=00 len=6
Nov 14 18:01:56 laptop kernel: usb-storage: Status code 0; transferred 6/6
Nov 14 18:01:56 laptop kernel: usb-storage: -- transfer complete
Nov 14 18:01:56 laptop kernel: usb-storage: Call to usb_stor_ctrl_transfer() returned 0
Nov 14 18:01:56 laptop kernel: usb-storage: usb_stor_bulk_transfer_buf: xfer 18 bytes
Nov 14 18:01:56 laptop kernel: usb-storage: Status code 0; transferred 18/18
Nov 14 18:01:56 laptop kernel: usb-storage: -- transfer complete
Nov 14 18:01:56 laptop kernel: usb-storage: CB data stage result is 0x0
Nov 14 18:01:56 laptop kernel: usb-storage: -- Result from auto-sense is 0
Nov 14 18:01:56 laptop kernel: usb-storage: -- code: 0x70, key: 0x0, ASC: 0x0, ASCQ: 0x0
Nov 14 18:01:56 laptop kernel: usb-storage: No Sense: No additional sense information
Nov 14 18:01:56 laptop kernel: usb-storage: Fixing INQUIRY data to show SCSI rev 2 - was 0
Nov 14 18:01:56 laptop kernel: usb-storage: scsi cmd done, result=0x0
Nov 14 18:01:56 laptop kernel: usb-storage: *** thread sleeping.
Nov 14 18:01:56 laptop kernel: usb-storage: queuecommand called
Nov 14 18:01:56 laptop kernel: usb-storage: *** thread awakened.
Nov 14 18:01:56 laptop kernel: usb-storage: Command TEST_UNIT_READY (6 bytes)
Nov 14 18:01:56 laptop kernel: usb-storage:  00 00 00 00 00 00
Nov 14 18:01:56 laptop kernel: usb-storage: usb_stor_ctrl_transfer: rq=00 rqtype=21 value=0000 index=00 len=6
Nov 14 18:01:56 laptop kernel: usb-storage: Status code 0; transferred 6/6
Nov 14 18:01:56 laptop kernel: usb-storage: -- transfer complete
Nov 14 18:01:56 laptop kernel: usb-storage: Call to usb_stor_ctrl_transfer() returned 0
Nov 14 18:01:56 laptop kernel: usb-storage: -- CB transport device requiring auto-sense
Nov 14 18:01:56 laptop kernel: usb-storage: Issuing auto-REQUEST_SENSE
Nov 14 18:01:56 laptop kernel: usb-storage: usb_stor_ctrl_transfer: rq=00 rqtype=21 value=0000 index=00 len=6
Nov 14 18:01:56 laptop kernel: usb-storage: Status code 0; transferred 6/6
Nov 14 18:01:56 laptop kernel: usb-storage: -- transfer complete
Nov 14 18:01:56 laptop kernel: usb-storage: Call to usb_stor_ctrl_transfer() returned 0
Nov 14 18:01:56 laptop kernel: usb-storage: usb_stor_bulk_transfer_buf: xfer 18 bytes
Nov 14 18:01:56 laptop kernel: usb-storage: Status code 0; transferred 18/18
Nov 14 18:01:56 laptop kernel: usb-storage: -- transfer complete
Nov 14 18:01:56 laptop kernel: usb-storage: CB data stage result is 0x0
Nov 14 18:01:56 laptop kernel: usb-storage: -- Result from auto-sense is 0
Nov 14 18:01:56 laptop kernel: usb-storage: -- code: 0x70, key: 0x0, ASC: 0x0, ASCQ: 0x0
Nov 14 18:01:56 laptop kernel: usb-storage: No Sense: No additional sense information
Nov 14 18:01:56 laptop kernel: usb-storage: scsi cmd done, result=0x0
Nov 14 18:01:56 laptop kernel: usb-storage: *** thread sleeping.
Nov 14 18:01:56 laptop kernel: usb-storage: queuecommand called
Nov 14 18:01:56 laptop kernel: usb-storage: *** thread awakened.
Nov 14 18:01:56 laptop kernel: usb-storage: Command READ_CAPACITY (10 bytes)
Nov 14 18:01:56 laptop kernel: usb-storage:  25 00 00 00 00 00 00 00 00 00
Nov 14 18:01:56 laptop kernel: usb-storage: usb_stor_ctrl_transfer: rq=00 rqtype=21 value=0000 index=00 len=10
Nov 14 18:01:56 laptop kernel: usb-storage: Status code 0; transferred 10/10
Nov 14 18:01:56 laptop kernel: usb-storage: -- transfer complete
Nov 14 18:01:56 laptop kernel: usb-storage: Call to usb_stor_ctrl_transfer() returned 0
Nov 14 18:01:56 laptop kernel: usb-storage: usb_stor_bulk_transfer_buf: xfer 8 bytes
Nov 14 18:01:56 laptop kernel: usb-storage: Status code 0; transferred 8/8
Nov 14 18:01:56 laptop kernel: usb-storage: -- transfer complete
Nov 14 18:01:56 laptop kernel: usb-storage: CB data stage result is 0x0
Nov 14 18:01:56 laptop kernel: usb-storage: -- CB transport device requiring auto-sense
Nov 14 18:01:56 laptop kernel: usb-storage: Issuing auto-REQUEST_SENSE
Nov 14 18:01:56 laptop kernel: usb-storage: usb_stor_ctrl_transfer: rq=00 rqtype=21 value=0000 index=00 len=6
Nov 14 18:01:56 laptop kernel: usb-storage: Status code 0; transferred 6/6
Nov 14 18:01:56 laptop kernel: usb-storage: -- transfer complete
Nov 14 18:01:56 laptop kernel: usb-storage: Call to usb_stor_ctrl_transfer() returned 0
Nov 14 18:01:56 laptop kernel: usb-storage: usb_stor_bulk_transfer_buf: xfer 18 bytes
Nov 14 18:01:56 laptop kernel: usb-storage: Status code 0; transferred 18/18
Nov 14 18:01:56 laptop kernel: usb-storage: -- transfer complete
Nov 14 18:01:56 laptop kernel: usb-storage: CB data stage result is 0x0
Nov 14 18:01:56 laptop kernel: usb-storage: -- Result from auto-sense is 0
Nov 14 18:01:56 laptop kernel: usb-storage: -- code: 0x70, key: 0x0, ASC: 0x0, ASCQ: 0x0
Nov 14 18:01:56 laptop kernel: usb-storage: No Sense: No additional sense information
Nov 14 18:01:56 laptop kernel: usb-storage: scsi cmd done, result=0x0
Nov 14 18:01:56 laptop kernel: usb-storage: *** thread sleeping.
Nov 14 18:01:56 laptop kernel: usb-storage: queuecommand called
Nov 14 18:01:56 laptop kernel: usb-storage: *** thread awakened.
Nov 14 18:01:56 laptop kernel: usb-storage: Command TEST_UNIT_READY (6 bytes)
Nov 14 18:01:56 laptop kernel: usb-storage:  00 00 00 00 00 00
Nov 14 18:01:56 laptop kernel: usb-storage: usb_stor_ctrl_transfer: rq=00 rqtype=21 value=0000 index=00 len=6
Nov 14 18:01:56 laptop kernel: usb-storage: Status code 0; transferred 6/6
Nov 14 18:01:56 laptop kernel: usb-storage: -- transfer complete
Nov 14 18:01:56 laptop kernel: usb-storage: Call to usb_stor_ctrl_transfer() returned 0
Nov 14 18:01:56 laptop kernel: usb-storage: -- CB transport device requiring auto-sense
Nov 14 18:01:56 laptop kernel: usb-storage: Issuing auto-REQUEST_SENSE
Nov 14 18:01:56 laptop kernel: usb-storage: usb_stor_ctrl_transfer: rq=00 rqtype=21 value=0000 index=00 len=6
Nov 14 18:01:56 laptop kernel: usb-storage: Status code 0; transferred 6/6
Nov 14 18:01:56 laptop kernel: usb-storage: -- transfer complete
Nov 14 18:01:57 laptop kernel: usb-storage: Call to usb_stor_ctrl_transfer() returned 0
Nov 14 18:01:57 laptop kernel: usb-storage: usb_stor_bulk_transfer_buf: xfer 18 bytes
Nov 14 18:01:57 laptop kernel: usb-storage: Status code 0; transferred 18/18
Nov 14 18:01:57 laptop kernel: usb-storage: -- transfer complete
Nov 14 18:01:57 laptop kernel: usb-storage: CB data stage result is 0x0
Nov 14 18:01:57 laptop kernel: usb-storage: -- Result from auto-sense is 0
Nov 14 18:01:57 laptop kernel: usb-storage: -- code: 0x70, key: 0x0, ASC: 0x0, ASCQ: 0x0
Nov 14 18:01:57 laptop kernel: usb-storage: No Sense: No additional sense information
Nov 14 18:01:57 laptop kernel: usb-storage: scsi cmd done, result=0x0
Nov 14 18:01:57 laptop kernel: usb-storage: *** thread sleeping.
Nov 14 18:01:57 laptop kernel: usb-storage: queuecommand called
Nov 14 18:01:57 laptop kernel: usb-storage: *** thread awakened.
Nov 14 18:01:57 laptop kernel: usb-storage: Command ALLOW_MEDIUM_REMOVAL (6 bytes)
Nov 14 18:01:57 laptop kernel: usb-storage:  1e 00 00 00 01 00
Nov 14 18:01:57 laptop kernel: usb-storage: usb_stor_ctrl_transfer: rq=00 rqtype=21 value=0000 index=00 len=6
Nov 14 18:01:57 laptop kernel: usb-storage: Status code -32; transferred 6/6
Nov 14 18:01:57 laptop kernel: usb-storage: -- stall on control pipe
Nov 14 18:01:57 laptop kernel: usb-storage: Call to usb_stor_ctrl_transfer() returned 2
Nov 14 18:01:57 laptop kernel: usb-storage: -- CB transport device requiring auto-sense
Nov 14 18:01:57 laptop kernel: usb-storage: -- transport indicates command failure
Nov 14 18:01:57 laptop kernel: usb-storage: Issuing auto-REQUEST_SENSE
Nov 14 18:01:57 laptop kernel: usb-storage: usb_stor_ctrl_transfer: rq=00 rqtype=21 value=0000 index=00 len=6
Nov 14 18:01:57 laptop kernel: usb-storage: Status code 0; transferred 6/6
Nov 14 18:01:57 laptop kernel: usb-storage: -- transfer complete
Nov 14 18:01:57 laptop kernel: usb-storage: Call to usb_stor_ctrl_transfer() returned 0
Nov 14 18:01:57 laptop kernel: usb-storage: usb_stor_bulk_transfer_buf: xfer 18 bytes
Nov 14 18:01:57 laptop kernel: usb-storage: Status code 0; transferred 18/18
Nov 14 18:01:57 laptop kernel: usb-storage: -- transfer complete
Nov 14 18:01:57 laptop kernel: usb-storage: CB data stage result is 0x0
Nov 14 18:01:57 laptop kernel: usb-storage: -- Result from auto-sense is 0
Nov 14 18:01:57 laptop kernel: usb-storage: -- code: 0x70, key: 0x5, ASC: 0x20, ASCQ: 0x0
Nov 14 18:01:57 laptop kernel: usb-storage: Illegal Request: Invalid command operation code
Nov 14 18:01:57 laptop kernel: usb-storage: scsi cmd done, result=0x2
Nov 14 18:01:57 laptop kernel: usb-storage: *** thread sleeping.
Nov 14 18:01:57 laptop kernel: usb-storage: *** thread awakened.
Nov 14 18:01:57 laptop kernel: usb-storage: Command READ_10 (10 bytes)
Nov 14 18:01:57 laptop kernel: usb-storage:  28 00 00 00 00 00 00 00 08 00
Nov 14 18:01:57 laptop kernel: usb-storage: usb_stor_ctrl_transfer: rq=00 rqtype=21 value=0000 index=00 len=10
Nov 14 18:01:57 laptop kernel: usb-storage: Status code 0; transferred 10/10
Nov 14 18:01:57 laptop kernel: usb-storage: -- transfer complete
Nov 14 18:01:57 laptop kernel: usb-storage: Call to usb_stor_ctrl_transfer() returned 0
Nov 14 18:01:57 laptop kernel: usb-storage: usb_stor_bulk_transfer_sglist: xfer 4096 bytes, 1 entries
Nov 14 18:01:57 laptop kernel: usb-storage: Status code 0; transferred 4096/4096
Nov 14 18:01:57 laptop kernel: usb-storage: -- transfer complete
Nov 14 18:01:57 laptop kernel: usb-storage: CB data stage result is 0x0
Nov 14 18:01:57 laptop kernel: usb-storage: -- CB transport device requiring auto-sense
Nov 14 18:01:57 laptop kernel: usb-storage: Issuing auto-REQUEST_SENSE
Nov 14 18:01:57 laptop kernel: usb-storage: usb_stor_ctrl_transfer: rq=00 rqtype=21 value=0000 index=00 len=6
Nov 14 18:01:57 laptop kernel: usb-storage: Status code 0; transferred 6/6
Nov 14 18:01:57 laptop kernel: usb-storage: -- transfer complete
Nov 14 18:01:57 laptop kernel: usb-storage: Call to usb_stor_ctrl_transfer() returned 0
Nov 14 18:01:57 laptop kernel: usb-storage: usb_stor_bulk_transfer_buf: xfer 18 bytes
Nov 14 18:01:57 laptop kernel: usb-storage: Status code 0; transferred 18/18
Nov 14 18:01:57 laptop kernel: usb-storage: -- transfer complete
Nov 14 18:01:57 laptop kernel: usb-storage: CB data stage result is 0x0
Nov 14 18:01:57 laptop kernel: usb-storage: -- Result from auto-sense is 0
Nov 14 18:01:57 laptop kernel: usb-storage: -- code: 0x70, key: 0x0, ASC: 0x0, ASCQ: 0x0
Nov 14 18:01:57 laptop kernel: usb-storage: No Sense: No additional sense information
Nov 14 18:01:57 laptop kernel: usb-storage: scsi cmd done, result=0x0
Nov 14 18:01:57 laptop kernel: usb-storage: *** thread sleeping.
Nov 14 18:01:57 laptop kernel: usb-storage: queuecommand called
Nov 14 18:01:57 laptop kernel: usb-storage: *** thread awakened.
Nov 14 18:01:57 laptop kernel: usb-storage: Bad target number (1:0)
Nov 14 18:01:57 laptop kernel: usb-storage: scsi cmd done, result=0x40000
Nov 14 18:01:57 laptop kernel: usb-storage: *** thread sleeping.
Nov 14 18:01:57 laptop kernel: usb-storage: queuecommand called
Nov 14 18:01:57 laptop kernel: usb-storage: *** thread awakened.
Nov 14 18:01:57 laptop kernel: usb-storage: Bad target number (2:0)
Nov 14 18:01:57 laptop kernel: usb-storage: scsi cmd done, result=0x40000
Nov 14 18:01:57 laptop kernel: usb-storage: *** thread sleeping.
Nov 14 18:01:57 laptop kernel: usb-storage: queuecommand called
Nov 14 18:01:57 laptop kernel: usb-storage: *** thread awakened.
Nov 14 18:01:57 laptop kernel: usb-storage: Bad target number (3:0)
Nov 14 18:01:57 laptop kernel: usb-storage: scsi cmd done, result=0x40000
Nov 14 18:01:57 laptop kernel: usb-storage: *** thread sleeping.
Nov 14 18:01:57 laptop kernel: usb-storage: queuecommand called
Nov 14 18:01:57 laptop kernel: usb-storage: *** thread awakened.
Nov 14 18:01:57 laptop kernel: usb-storage: Bad target number (4:0)
Nov 14 18:01:57 laptop kernel: usb-storage: scsi cmd done, result=0x40000
Nov 14 18:01:57 laptop kernel: usb-storage: *** thread sleeping.
Nov 14 18:01:57 laptop kernel: usb-storage: queuecommand called
Nov 14 18:01:57 laptop kernel: usb-storage: *** thread awakened.
Nov 14 18:01:57 laptop kernel: usb-storage: Bad target number (5:0)
Nov 14 18:01:57 laptop kernel: usb-storage: scsi cmd done, result=0x40000
Nov 14 18:01:57 laptop kernel: usb-storage: *** thread sleeping.
Nov 14 18:01:57 laptop kernel: usb-storage: queuecommand called
Nov 14 18:01:57 laptop kernel: usb-storage: *** thread awakened.
Nov 14 18:01:57 laptop kernel: usb-storage: Bad target number (6:0)
Nov 14 18:01:57 laptop kernel: usb-storage: scsi cmd done, result=0x40000
Nov 14 18:01:57 laptop kernel: usb-storage: *** thread sleeping.
Nov 14 18:01:57 laptop kernel: usb-storage: queuecommand called
Nov 14 18:01:57 laptop kernel: usb-storage: *** thread awakened.
Nov 14 18:01:57 laptop kernel: usb-storage: Bad target number (7:0)
Nov 14 18:01:57 laptop kernel: usb-storage: scsi cmd done, result=0x40000
Nov 14 18:01:57 laptop kernel: usb-storage: *** thread sleeping.
Nov 14 18:01:57 laptop kernel: WARNING: USB Mass Storage data integrity not assured
Nov 14 18:01:57 laptop kernel: USB Mass Storage device found at 3
Nov 14 18:02:11 laptop patman: NOTE attach COMPLETED NOTE
Signature · 6 lines
Matthew Dharm                              Home: [email protected] 
Maintainer, Linux USB Mass Storage Driver

It was a new hope.
					-- Dust Puppy
User Friendly, 12/25/1998
#12 lore raw
Quoted 2 lines · Matthew Dharm

A clarification question: Are you going to merge the patch via the linux-scsi tree, or should I try to get it merged via the linux-usb tree?

Matthew -

Yes, merge via linux-usb.

Thanks.

-- Patrick Mansfield

#13 lore raw
In reply to Patrick Mansfield
Quoted 4 lines

allows the setting to be overwritten for specific vendor + model via the scsi_devinfo/dev_flags code - so users or distributions can white list devices without modifying the kernel (devinfo settings have priority over shost->flags, see scsi_devinfo.c).

Yes please.

Quoted 3 lines

for clarity: ...
BLIST_MS_SKIP_PAGE_08 means for sd assume write through cache ... BLIST_MS_SKIP_PAGE_3F means for sd assume writable media.

Ah.

Pat LaVarre