Time to conclude the Sony USB mass storage thread
Subsystems (3)
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
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_3fandskip_ms_page_8globally 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
@@ -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
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_3fandskip_ms_page_8globally 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, seescsi_devinfo.c).I did not give the flags very good names, for clarity:
BLIST_MS_SKIP_PAGE_08means for sd assume write through cache.
BLIST_MS_SKIP_PAGE_3Fmeans for sd assume writable media.And we don't need any special code in a
slave_configureor elsewhere to check if it is a direct access device.diff -uprN -X
/home/patman/dontdiffbl-25/drivers/usb/storage/scsiglue.cusb-ms-flags/drivers/usb/storage/scsiglue.cdrivers/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
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_08sounds more general than it is -- as I understand it, this flag will only affectsd.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
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_configurechanges (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
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
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_infoIf 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_infoThe above can also be done at boot time or
scsi_modload time, on boot use:scsi_mod.dev_flags=vendor:model:0xa000For
scsi_modas 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_callinstead ofmodule_param_string(we need a special callout to parse the string, I did not understandmodule_param_callwhen I addedmodule_paramusage), plus code to always (not just for modules) add sysfs parameters for allmodule_paramentries.The device specific flags override any other settings - the
shost->flagsor thescsi_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 inscsi_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
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
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
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
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
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
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
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, seescsi_devinfo.c).
Yes please.
Quoted 3 lines
for clarity: ...
BLIST_MS_SKIP_PAGE_08means for sd assume write through cache ...BLIST_MS_SKIP_PAGE_3Fmeans for sd assume writable media.
Ah.
Pat LaVarre