Random data corruption with USB mass storage on 7.0-BETA2
John Hay
jhay at meraka.org.za
Thu Nov 15 05:37:07 PST 2007
On Thu, Nov 15, 2007 at 09:52:34AM +0100, Heiko Wundram (Beenic) wrote:
> Hey all!
>
> While trying to upload some music to my mobile phone, I stumbled across the
> following odd behaviour when uploading files to an SD-card (inserted into my
> Sony Ericsson M600i) which is connected via USB as a mass-storage device:
>
> -----
> ...
> umass0: <Sony Ericsson Mobile Communications M600i, class 2/0, rev 2.00/0.00,
> addr 2> on uhub0
> ...
> da0 at umass-sim0 bus 0 target 0 lun 0
> da0: < M600i 1.0> Removable Direct Access SCSI-0 device
> da0: 1.000MB/s transfers
> da0: 59MB (121821 512 byte sectors: 64H 32S/T 59C)
> ...
> -----
>
> The card is formatted as FAT (by the phone software), and I can mount it with
> a plain "mount -t msdosfs /dev/da0 /mnt" without any kind of problems, except
> that directories that should be there, at least as displayed by the File
> Manager on the phone, aren't present under the mount point. There is no
> output to dmesg on the mounting (besides the GEOM label for the stick being
> removed).
>
> When copying files to the device, the phone displays that a transfer is taking
> place, and after finishing the transfer, comparing files on the mountpoint to
> the source files shows them as being equal. When I then unmount the device
> (which also runs cleanly, without any further output to dmesg except the
> reappearance of the GEOM label) and remount it, the copied files appear under
> the mount-point, but comparing the files on the mount-point against the
> source files shows them as being different. The sizes and modification dates
> are equal, though, and most of a file is correct, but non-deterministically
> every 16k or similar a stream of random bytes appears.
>
> When I do the same transfer from a 6.2-STABLE (last csupped some two months
> ago), the directories the phone reports appear under the mount-point, and the
> same transfer works properly (i.e., uploading the file, unmounting,
> remounting and comparing show the files as being the same, and playing the
> file on the phone works, and doesn't contain corruption artefacts).
>
> The 6.2-STABLE shows similar information on the device in dmesg (esp. the
> H/S/C info).
>
> 6.2-STABLE is a plain GENERIC kernel, with atapicam loaded (and some other
> device drivers for sound and Bluetooth), 7.0-BETA2 is a slightly adapted
> GENERIC (with SCHED_4BSD replaced with SCHED_ULE and SMP support removed)
> also with atapicam loaded (and some other device drivers for sound and
> bluetooth).
>
> I'll try to do some digging into the changes made to msdosfs between
> 6.2-STABLE and 7.0-BETA2 some time later on, but if anybody else is seeing
> this behaviour too or wants me to produce more debugging info on this (esp.
> some msdosfs debugging infos), feel free to send me a mail, and I'll try to
> get this done some time during the day.
I'm not sure that it is msdosfs' fault. Last night I also corrupted my
FAT based USB memory stick. But I used mtools and did not mount it. That
was on 8-current though. I have not looked into it because there are
other higher priority stuff also not working. :-/
John
--
John Hay -- John.Hay at meraka.csir.co.za / jhay at FreeBSD.org
More information about the freebsd-stable
mailing list