Subject: Re: umass woe: sd0(umass0:0:0): readonly device & drive offline
To: Simon Burge <simonb@wasabisystems.com>
From: Hubert Feyrer <feyrer@cs.stevens.edu>
List: tech-kern
Date: 11/16/2005 02:27:11
On Tue, 15 Nov 2005, Simon Burge wrote:
> Hubert- does the device come with its own Windows drivers, or do you
> know if the windows copes on its own?  Also, do we know if Linux has
> quirks to support this?  It would be great not to need the quirk,
> but if there's really nothing we can do that I'm more than happy to
> live with it.

I plugged my camera into a Windows XP and some Gentoo(?) Linux today 
(rather recent kernel). Results:
1) It works flawless on Windows
2) It doesn't work on Linux. Can't mount, dmesg is attached below.

Thinking about this, I think it depends on the device if a "Lock the 
door!" command should be treated as failure or not. I'd say it shouldn't 
be treated as a fatal error in all cases, but I could imagine that e.g. my 
USB dishwasher should take the command serious or block, and not ignore it 
and continue.

Maybe make the default operation to not fail but at least warn, and have 
some per-device quirk to force ignorance of that command as fatal?

(Not that I see anything where this digicam could lock a door... the lens 
is fixed and cannot be retracted or covered...)

Or maybe commit the quirk for now...
Is the USB/umass standard anywhere accessible to have a look for what they 
suggest?


  - Hubert


usb 5-2: new full speed USB device using uhci_hcd and address 2
scsi2 : SCSI emulation for USB Mass Storage devices
usb-storage: device found at 2
usb-storage: waiting for device to settle before scanning
   Vendor: DIGITAL   Model: CAMERA            Rev: 1.00
   Type:   Direct-Access                      ANSI SCSI revision: 00
SCSI device sdb: 248832 512-byte hdwr sectors (127 MB)
sdb: Write Protect is off
sdb: Mode Sense: 00 06 00 00
sdb: assuming drive cache: write through
SCSI device sdb: 248832 512-byte hdwr sectors (127 MB)
sdb: Write Protect is off
sdb: Mode Sense: 00 06 00 00
sdb: assuming drive cache: write through
  sdb: sdb1
Attached scsi removable disk sdb at scsi2, channel 0, id 0, lun 0
Attached scsi generic sg2 at scsi2, channel 0, id 0, lun 0,  type 0
usb-storage: device scan complete
usb 5-2: reset full speed USB device using uhci_hcd and address 2
usb 5-2: device descriptor read/64, error -110
usb 5-2: device descriptor read/64, error -110
usb 5-2: reset full speed USB device using uhci_hcd and address 2
usb 5-2: device descriptor read/64, error -110
usb 5-2: device descriptor read/64, error -110
usb 5-2: reset full speed USB device using uhci_hcd and address 2
usb 5-2: device not accepting address 2, error -110
usb 5-2: reset full speed USB device using uhci_hcd and address 2
usb 5-2: device not accepting address 2, error -110
usb 5-2: USB disconnect, address 2
scsi: Device offlined - not ready after error recovery: host 2 channel 0 id 0 lun 0
sd 2:0:0:0: SCSI error: return code = 0x10000
end_request: I/O error, dev sdb, sector 248825
Buffer I/O error on device sdb1, logical block 248728
scsi2 (0:0): rejecting I/O to device being removed
Buffer I/O error on device sdb1, logical block 248729
Buffer I/O error on device sdb1, logical block 248730
Buffer I/O error on device sdb1, logical block 248731
Buffer I/O error on device sdb1, logical block 248732
Buffer I/O error on device sdb1, logical block 248733
Buffer I/O error on device sdb1, logical block 248734
scsi2 (0:0): rejecting I/O to device being removed
Buffer I/O error on device sdb1, logical block 248728
Buffer I/O error on device sdb1, logical block 248729
Buffer I/O error on device sdb1, logical block 248730
scsi2 (0:0): rejecting I/O to device being removed
scsi2 (0:0): rejecting I/O to device being removed
scsi2 (0:0): rejecting I/O to device being removed
scsi2 (0:0): rejecting I/O to device being removed
scsi2 (0:0): rejecting I/O to device being removed
scsi2 (0:0): rejecting I/O to device being removed
scsi2 (0:0): rejecting I/O to device being removed
scsi2 (0:0): rejecting I/O to device being removed
scsi2 (0:0): rejecting I/O to device being removed
scsi2 (0:0): rejecting I/O to device being removed
scsi2 (0:0): rejecting I/O to device being removed
scsi2 (0:0): rejecting I/O to device being removed
scsi2 (0:0): rejecting I/O to device being removed
scsi2 (0:0): rejecting I/O to device being removed
scsi2 (0:0): rejecting I/O to device being removed
scsi2 (0:0): rejecting I/O to device being removed
scsi2 (0:0): rejecting I/O to device being removed
scsi2 (0:0): rejecting I/O to device being removed
scsi2 (0:0): rejecting I/O to device being removed
scsi2 (0:0): rejecting I/O to device being removed
scsi2 (0:0): rejecting I/O to device being removed
scsi2 (0:0): rejecting I/O to device being removed
scsi2 (0:0): rejecting I/O to device being removed
scsi2 (0:0): rejecting I/O to device being removed
scsi2 (0:0): rejecting I/O to device being removed
scsi2 (0:0): rejecting I/O to device being removed
scsi2 (0:0): rejecting I/O to device being removed
scsi2 (0:0): rejecting I/O to device being removed
scsi2 (0:0): rejecting I/O to device being removed
scsi2 (0:0): rejecting I/O to device being removed
scsi2 (0:0): rejecting I/O to device being removed
scsi2 (0:0): rejecting I/O to device being removed
scsi2 (0:0): rejecting I/O to device being removed
scsi2 (0:0): rejecting I/O to device being removed
sdb : READ CAPACITY failed.
sdb : status=0, message=00, host=1, driver=00 
sdb : sense not available. 
sdb: Write Protect is off
sdb: Mode Sense: 00 00 00 00
sdb: assuming drive cache: write through
scsi2 (0:0): rejecting I/O to dead device
scsi2 (0:0): rejecting I/O to dead device
scsi2 (0:0): rejecting I/O to dead device
scsi2 (0:0): rejecting I/O to dead device
scsi2 (0:0): rejecting I/O to dead device
scsi2 (0:0): rejecting I/O to dead device
scsi2 (0:0): rejecting I/O to dead device
scsi2 (0:0): rejecting I/O to dead device
scsi2 (0:0): rejecting I/O to dead device
scsi2 (0:0): rejecting I/O to dead device
scsi2 (0:0): rejecting I/O to dead device
scsi2 (0:0): rejecting I/O to dead device
scsi2 (0:0): rejecting I/O to dead device
scsi2 (0:0): rejecting I/O to dead device
scsi2 (0:0): rejecting I/O to dead device
scsi2 (0:0): rejecting I/O to dead device
scsi2 (0:0): rejecting I/O to dead device
scsi2 (0:0): rejecting I/O to dead device
scsi2 (0:0): rejecting I/O to dead device
scsi2 (0:0): rejecting I/O to dead device
scsi2 (0:0): rejecting I/O to dead device
scsi2 (0:0): rejecting I/O to dead device
scsi2 (0:0): rejecting I/O to dead device
scsi2 (0:0): rejecting I/O to dead device
scsi2 (0:0): rejecting I/O to dead device
scsi2 (0:0): rejecting I/O to dead device
scsi2 (0:0): rejecting I/O to dead device
scsi2 (0:0): rejecting I/O to dead device
scsi2 (0:0): rejecting I/O to dead device
scsi2 (0:0): rejecting I/O to dead device
scsi2 (0:0): rejecting I/O to dead device
scsi2 (0:0): rejecting I/O to dead device
scsi2 (0:0): rejecting I/O to dead device
scsi2 (0:0): rejecting I/O to dead device
scsi2 (0:0): rejecting I/O to dead device
scsi2 (0:0): rejecting I/O to dead device
scsi2 (0:0): rejecting I/O to dead device
scsi2 (0:0): rejecting I/O to dead device
scsi2 (0:0): rejecting I/O to dead device
scsi2 (0:0): rejecting I/O to dead device
scsi2 (0:0): rejecting I/O to dead device
scsi2 (0:0): rejecting I/O to dead device
scsi2 (0:0): rejecting I/O to dead device
scsi2 (0:0): rejecting I/O to dead device
scsi2 (0:0): rejecting I/O to dead device
scsi2 (0:0): rejecting I/O to dead device
scsi2 (0:0): rejecting I/O to dead device
scsi2 (0:0): rejecting I/O to dead device
scsi2 (0:0): rejecting I/O to dead device
scsi2 (0:0): rejecting I/O to dead device
scsi2 (0:0): rejecting I/O to dead device
scsi2 (0:0): rejecting I/O to dead device
scsi2 (0:0): rejecting I/O to dead device
scsi2 (0:0): rejecting I/O to dead device
scsi2 (0:0): rejecting I/O to dead device
scsi2 (0:0): rejecting I/O to dead device
scsi2 (0:0): rejecting I/O to dead device
scsi2 (0:0): rejecting I/O to dead device
scsi2 (0:0): rejecting I/O to dead device
scsi2 (0:0): rejecting I/O to dead device
scsi2 (0:0): rejecting I/O to dead device
scsi2 (0:0): rejecting I/O to dead device
scsi2 (0:0): rejecting I/O to dead device
scsi2 (0:0): rejecting I/O to dead device
scsi2 (0:0): rejecting I/O to dead device
usb 5-2: new full speed USB device using uhci_hcd and address 3
usb 5-2: device descriptor read/64, error -110
usb 5-2: device descriptor read/64, error -110
usb 5-2: new full speed USB device using uhci_hcd and address 4
usb 5-2: device descriptor read/64, error -110
usb 5-2: device descriptor read/64, error -110
usb 5-2: new full speed USB device using uhci_hcd and address 5