Bug 6397

Summary: usb-storage: I/O errors accessing Motorola RAZRV3x phone
Product: Drivers Reporter: Georg Greve (greve)
Component: USBAssignee: Greg Kroah-Hartman (greg)
Status: RESOLVED CODE_FIX    
Severity: normal    
Priority: P2    
Hardware: i386   
OS: Linux   
Kernel Version: 2.6.16.1 Subsystem:
Regression: --- Bisected commit-id:
Bug Depends on:    
Bug Blocks: 5089    

Description Georg Greve 2006-04-16 08:01:08 UTC
Most recent kernel where this bug did not occur: n/a
Distribution: Debian GNU/Linux (testing)
Hardware Environment: Motorola RAZRV3x phone connected via USB to SAMSUNG X20
notebook
Software Environment: n/a
Problem Description: When connecting the Motorola phone via USB, the kernel
recognises it as a USB storage device, it is possible to mount this device
normally and browse and read the contents of the memory card in the phone
(although not the memory of the phone itself). When trying to write to the
phone, there are multiple timeouts and the phone does not umount anymore.
Unplugging the phone breaks the endless cycle of error messages.

Steps to reproduce:

1. Plug in Motorola RAZRV3x phone:
Apr 16 11:33:33 cerebro kernel: usb 3-1: new full speed USB device using
uhci_hcd and address 3
Apr 16 11:33:33 cerebro kernel: usb 3-1: configuration #1 chosen from 1 choice
Apr 16 11:33:33 cerebro kernel: scsi0 : SCSI emulation for USB Mass Storage devices
Apr 16 11:33:33 cerebro kernel: usb-storage: device found at 3
Apr 16 11:33:33 cerebro kernel: usb-storage: waiting for device to settle before
scanning
Apr 16 11:33:39 cerebro kernel:   Vendor: Motorola  Model: Motorola Phone   
Rev: 2.31
Apr 16 11:33:39 cerebro kernel:   Type:   Direct-Access                     
ANSI SCSI revision: 02
Apr 16 11:33:39 cerebro kernel: usb-storage: device scan complete
Apr 16 11:33:40 cerebro kernel: SCSI device sda: 990977 512-byte hdwr sectors
(507 MB)
Apr 16 11:33:40 cerebro kernel: sda: Write Protect is off
Apr 16 11:33:40 cerebro kernel: sda: Mode Sense: 0b 00 00 08
Apr 16 11:33:40 cerebro kernel: sda: assuming drive cache: write through
Apr 16 11:33:40 cerebro kernel: SCSI device sda: 990977 512-byte hdwr sectors
(507 MB)
Apr 16 11:33:40 cerebro kernel: sda: Write Protect is off
Apr 16 11:33:40 cerebro kernel: sda: Mode Sense: 0b 00 00 08
Apr 16 11:33:40 cerebro kernel: sda: assuming drive cache: write through
Apr 16 11:33:40 cerebro kernel:  sda: sda1
Apr 16 11:33:40 cerebro kernel: sd 0:0:0:0: Attached scsi removable disk sda

2. mount USB storage, browse phone

3. try to write to phone:
Apr 16 11:45:52 cerebro kernel: sd 0:0:0:0: SCSI error: return code = 0x10070000
Apr 16 11:45:52 cerebro kernel: end_request: I/O error, dev sda, sector 480
Apr 16 11:45:52 cerebro kernel: Buffer I/O error on device sda1, logical block 243
Apr 16 11:45:52 cerebro kernel: lost page write due to I/O error on sda1
Apr 16 11:47:15 cerebro kernel: sd 0:0:0:0: SCSI error: return code = 0x10070000
Apr 16 11:47:15 cerebro kernel: end_request: I/O error, dev sda, sector 6656
Apr 16 11:47:18 cerebro kernel: sd 0:0:0:0: SCSI error: return code = 0x10070000
Apr 16 11:47:18 cerebro kernel: end_request: I/O error, dev sda, sector 6688
Apr 16 11:47:21 cerebro kernel: sd 0:0:0:0: SCSI error: return code = 0x10070000
Apr 16 11:47:21 cerebro kernel: end_request: I/O error, dev sda, sector 6696
Apr 16 11:47:24 cerebro kernel: sd 0:0:0:0: SCSI error: return code = 0x10070000
Apr 16 11:47:24 cerebro kernel: end_request: I/O error, dev sda, sector 6704
Apr 16 11:47:26 cerebro kernel: sd 0:0:0:0: SCSI error: return code = 0x10070000
Apr 16 11:47:26 cerebro kernel: end_request: I/O error, dev sda, sector 6712
Apr 16 11:47:28 cerebro kernel: sd 0:0:0:0: SCSI error: return code = 0x10070000
Apr 16 11:47:28 cerebro kernel: end_request: I/O error, dev sda, sector 6720
Apr 16 11:47:30 cerebro kernel: sd 0:0:0:0: SCSI error: return code = 0x10070000
Apr 16 11:47:30 cerebro kernel: end_request: I/O error, dev sda, sector 6728
Apr 16 11:47:32 cerebro kernel: sd 0:0:0:0: SCSI error: return code = 0x10070000
Apr 16 11:47:32 cerebro kernel: end_request: I/O error, dev sda, sector 6736
Apr 16 11:47:34 cerebro kernel: sd 0:0:0:0: SCSI error: return code = 0x10070000
Apr 16 11:47:34 cerebro kernel: end_request: I/O error, dev sda, sector 6744
Apr 16 11:47:36 cerebro kernel: sd 0:0:0:0: SCSI error: return code = 0x10070000
Apr 16 11:47:36 cerebro kernel: end_request: I/O error, dev sda, sector 6752
Apr 16 11:47:37 cerebro kernel: sd 0:0:0:0: SCSI error: return code = 0x10070000
Apr 16 11:47:37 cerebro kernel: end_request: I/O error, dev sda, sector 6760
Apr 16 11:47:39 cerebro kernel: sd 0:0:0:0: SCSI error: return code = 0x10070000
Apr 16 11:47:39 cerebro kernel: end_request: I/O error, dev sda, sector 6768
Apr 16 11:47:40 cerebro kernel: sd 0:0:0:0: SCSI error: return code = 0x10070000
Apr 16 11:47:40 cerebro kernel: end_request: I/O error, dev sda, sector 6776
Apr 16 11:47:42 cerebro kernel: sd 0:0:0:0: SCSI error: return code = 0x10070000
Apr 16 11:47:42 cerebro kernel: end_request: I/O error, dev sda, sector 6784
Apr 16 11:47:43 cerebro kernel: sd 0:0:0:0: SCSI error: return code = 0x10070000
Apr 16 11:47:43 cerebro kernel: end_request: I/O error, dev sda, sector 6792

4. Disconnect phone:
Apr 16 11:47:44 cerebro kernel: usb 3-1: USB disconnect, address 3
Apr 16 11:47:44 cerebro kernel: sd 0:0:0:0: SCSI error: return code = 0x10000
Apr 16 11:47:44 cerebro kernel: end_request: I/O error, dev sda, sector 6800
Apr 16 11:47:44 cerebro kernel: sd 0:0:0:0: rejecting I/O to device being removed
Apr 16 11:47:44 cerebro last message repeated 29 times
Apr 16 11:47:44 cerebro kernel: Buffer I/O error on device sda1, logical block 1043
Apr 16 11:47:44 cerebro kernel: lost page write due to I/O error on sda1
Apr 16 11:47:44 cerebro kernel: sd 0:0:0:0: rejecting I/O to device being removed
Apr 16 11:47:44 cerebro kernel: Buffer I/O error on device sda1, logical block 1011
Apr 16 11:47:44 cerebro kernel: lost page write due to I/O error on sda1
Apr 16 11:47:44 cerebro kernel: sd 0:0:0:0: rejecting I/O to device being removed
Apr 16 11:47:44 cerebro kernel: Buffer I/O error on device sda1, logical block 659
Apr 16 11:47:44 cerebro kernel: lost page write due to I/O error on sda1
Apr 16 11:47:44 cerebro kernel: sd 0:0:0:0: rejecting I/O to device being removed
Apr 16 11:47:44 cerebro kernel: Buffer I/O error on device sda1, logical block 276
Apr 16 11:47:44 cerebro kernel: lost page write due to I/O error on sda1
Apr 16 11:47:44 cerebro kernel: sd 0:0:0:0: rejecting I/O to device being removed
Apr 16 11:47:44 cerebro kernel: Buffer I/O error on device sda1, logical block 122
Apr 16 11:47:44 cerebro kernel: lost page write due to I/O error on sda1
Apr 16 11:47:44 cerebro kernel: Buffer I/O error on device sda1, logical block 123
Apr 16 11:47:44 cerebro kernel: lost page write due to I/O error on sda1
Apr 16 11:47:44 cerebro kernel: sd 0:0:0:0: rejecting I/O to device being removed
Apr 16 11:47:44 cerebro kernel: Buffer I/O error on device sda1, logical block 1
Apr 16 11:47:44 cerebro kernel: lost page write due to I/O error on sda1
Apr 16 11:47:44 cerebro kernel: Buffer I/O error on device sda1, logical block 2
Apr 16 11:47:44 cerebro kernel: lost page write due to I/O error on sda1
Apr 16 11:47:44 cerebro kernel: sd 0:0:0:0: SCSI error: return code = 0x10000
Apr 16 11:47:44 cerebro kernel: end_request: I/O error, dev sda, sector 6928
Apr 16 11:47:44 cerebro kernel: sd 0:0:0:0: rejecting I/O to device being removed
Apr 16 11:47:44 cerebro kernel: sda : READ CAPACITY failed.
Apr 16 11:47:44 cerebro kernel: sda : status=0, message=00, host=1, driver=00
Apr 16 11:47:44 cerebro kernel: sda : sense not available.
Apr 16 11:47:44 cerebro kernel: sda: Write Protect is off
Apr 16 11:47:44 cerebro kernel: sda: Mode Sense: 00 00 00 00
Apr 16 11:47:44 cerebro kernel: sda: assuming drive cache: write through
Apr 16 11:47:44 cerebro kernel:  0:0:0:0: rejecting I/O to dead device

5. When connecting phone again, all seems fine once more:
usb 3-1: new full speed USB device using uhci_hcd and address 4
usb 3-1: configuration #1 chosen from 1 choice
scsi1 : SCSI emulation for USB Mass Storage devices
usb-storage: device found at 4
usb-storage: waiting for device to settle before scanning
  Vendor: Motorola  Model: Motorola Phone    Rev: 2.31
  Type:   Direct-Access                      ANSI SCSI revision: 02
SCSI device sda: 990977 512-byte hdwr sectors (507 MB)
sda: Write Protect is off
sda: Mode Sense: 0b 00 00 08
sda: assuming drive cache: write through
SCSI device sda: 990977 512-byte hdwr sectors (507 MB)
sda: Write Protect is off
sda: Mode Sense: 0b 00 00 08
sda: assuming drive cache: write through
 sda: sda1
sd 1:0:0:0: Attached scsi removable disk sda
usb-storage: device scan complete

6. reading memory card in phone (phone memory itself remains invisible) is no
problem, downloading pictures is possible, although phone keeps giving errors:
Apr 16 11:57:33 cerebro kernel: sd 1:0:0:0: SCSI error: return code = 0x10070000
Apr 16 11:57:33 cerebro kernel: end_request: I/O error, dev sda, sector 544
Apr 16 11:57:33 cerebro kernel: Buffer I/O error on device sda1, logical block 307
Apr 16 11:57:33 cerebro kernel: lost page write due to I/O error on sda1
Apr 16 11:57:33 cerebro kernel: sd 1:0:0:0: SCSI error: return code = 0x10070000
Apr 16 11:57:33 cerebro kernel: end_request: I/O error, dev sda, sector 545
Apr 16 11:57:33 cerebro kernel: Buffer I/O error on device sda1, logical block 308
Apr 16 11:57:33 cerebro kernel: lost page write due to I/O error on sda1
Apr 16 11:57:33 cerebro kernel: sd 1:0:0:0: SCSI error: return code = 0x10070000
Apr 16 11:57:33 cerebro kernel: end_request: I/O error, dev sda, sector 546
Apr 16 11:57:33 cerebro kernel: Buffer I/O error on device sda1, logical block 309
Apr 16 11:57:33 cerebro kernel: lost page write due to I/O error on sda1
Apr 16 11:57:33 cerebro kernel: sd 1:0:0:0: SCSI error: return code = 0x10070000
Apr 16 11:57:33 cerebro kernel: end_request: I/O error, dev sda, sector 547
Apr 16 11:57:33 cerebro kernel: Buffer I/O error on device sda1, logical block 310
Apr 16 11:57:33 cerebro kernel: lost page write due to I/O error on sda1
Apr 16 11:58:13 cerebro kernel: sd 1:0:0:0: SCSI error: return code = 0x10070000
Apr 16 11:58:13 cerebro kernel: end_request: I/O error, dev sda, sector 547
Apr 16 11:58:13 cerebro kernel: Buffer I/O error on device sda1, logical block 310
Apr 16 11:58:13 cerebro kernel: lost page write due to I/O error on sda1
Apr 16 11:58:13 cerebro kernel: sd 1:0:0:0: SCSI error: return code = 0x10070000
Apr 16 11:58:13 cerebro kernel: end_request: I/O error, dev sda, sector 544
Apr 16 11:58:13 cerebro kernel: Buffer I/O error on device sda1, logical block 307
Apr 16 11:58:13 cerebro kernel: lost page write due to I/O error on sda1


Additional information:

* lsusb -vvv for phone:
Bus 003 Device 003: ID 22b8:3010 Motorola PCS
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               1.10
  bDeviceClass            0 (Defined at Interface level)
  bDeviceSubClass         0
  bDeviceProtocol         0
  bMaxPacketSize0        64
  idVendor           0x22b8 Motorola PCS
  idProduct          0x3010
  bcdDevice            0.01
  iManufacturer           1 Motorola Inc.
  iProduct                2 Motorola Phone (RAZRV3x)
  iSerial                 0
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength           32
    bNumInterfaces          1
    bConfigurationValue     1
    iConfiguration         33 Motorola Mass Storage Class
    bmAttributes         0x80
      (Bus Powered)
    MaxPower              500mA
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       0
      bNumEndpoints           2
      bInterfaceClass         8 Mass Storage
      bInterfaceSubClass      6 SCSI
      bInterfaceProtocol     80 Bulk (Zip)
      iInterface             34 Motorola Mass Storage Interface
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x05  EP 5 OUT
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0040  1x 64 bytes
        bInterval               0
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x86  EP 6 IN
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0040  1x 64 bytes
        bInterval               0
Device Status:     0x0000
  (Bus Powered)


* cat /proc/bus/usb/devices for phone:
T:  Bus=03 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#=  3 Spd=12  MxCh= 0
D:  Ver= 1.10 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
P:  Vendor=22b8 ProdID=3010 Rev= 0.01
S:  Manufacturer=Motorola Inc.
S:  Product=Motorola Phone (RAZRV3x)
C:* #Ifs= 1 Cfg#= 1 Atr=80 MxPwr=500mA
I:  If#= 0 Alt= 0 #EPs= 2 Cls=08(stor.) Sub=06 Prot=50 Driver=usb-storage
E:  Ad=05(O) Atr=02(Bulk) MxPS=  64 Ivl=0ms
E:  Ad=86(I) Atr=02(Bulk) MxPS=  64 Ivl=0ms
Comment 1 Greg Kroah-Hartman 2006-08-30 00:54:21 UTC
This is now fixed in the latest 2.6.18-rc5 kernel release.