8.0-RC USB/FS problem

Guojun Jin gjin at ubicom.com
Mon Nov 23 04:12:00 UTC 2009

>From more intensive diagnose, it looks like more related USB layer.

repeated a few time on following process and ithe crash happened at different USB access phase at each time.

dd if=/dev/zero of=/dev/da0 count=1000 bs=4k
             slice 1 (da0s1) 18GB ID=12
             slice 2 (da0s2) 10-15GB Id=165
             slice 3 (da0s3) rest ID=165
         W ---> OK
             da0s3d 9GB         /mnt
             da0s3e rest        /dist
         W ---> da0s3e ---- device is not configured.

w# ll /dev/da0*      # after sysinstall did partition + W at 1st time
crw-r-----  1 root  operator    0,  97 Nov 22 11:23 /dev/da0
crw-r-----  1 root  operator    0,  98 Nov 22 11:23 /dev/da0s1
crw-r-----  1 root  operator    0,  99 Nov 22 11:23 /dev/da0s2
crw-r-----  1 root  operator    0, 100 Nov 22 11:23 /dev/da0s3

# ll /dev/da0*      # after sysinstall start at 2nd time
crw-r-----  1 root  operator    0,  97 Nov 22 11:27 /dev/da0
System crashed

The crash log is available at http:/www.daemonfun.com/archives/pub/USB/crash1-reset.bz2
(All logs are based on hw.usb.umass.debug=-1)

After system reboot, and repeated above processes, the da0s3e was mounted on /dist, but da0s3d cannot.
It tunred out that newfs fail inside labeling process in sysinstall. Manually did newfs on da0s3d, and
it cannot be mounted on /mnt, but access to it caused crash.
The crash log is available at http:/www.daemonfun.com/archives/pub/USB/newfs

Tried entire process again, this time, both partitons are formatted (newfs) inside labaling process (sysinstall)
but crahsed system during dump/restore on da0s3e (/dist).
The crash log is available at http:/www.daemonfun.com/archives/pub/USB/usb-log.crash2.bz2, which is huge one.
It contains two parts, one dump/restore IDE to da0s3d (passed), and the rest is dump/restore to da0s3e (crashed).

I am going to reinstall the system with the new ISO from Nov 21 8.0-RELEASE to see if anything will improve.

-----Original Message-----
From: Hans Petter Selasky [mailto:hselasky at c2i.net]
Sent: Sun 11/22/2009 1:47 AM
To: freebsd-usb at freebsd.org
Cc: Guojun Jin; bugs at freebsd.org; freebsd-stable at freebsd.org
Subject: Re: 8.0-RC USB/FS problem
On Sunday 22 November 2009 05:38:13 Guojun Jin wrote:
> Tried on the USB hard drive:
> Deleted slice 3 and recreated slice 3 with two partitions s3d and s3e.
> Was happy because successfully did dump/restore on s3d, and thought it just
> partition format issue; but system crashed during dump/restore on s3e, and
> partition lost the file system type.
> wolf# mount /dev/da0s3e /mnt
> WARNING: /mnt was not properly dismounted
> /mnt: mount pending error: blocks 35968 files 0
> wolf# fsck da0s3e
> fsck: Could not determine filesystem type
> wolf# bsdlabel da0s3
> # /dev/da0s3:
> 8 partitions:
> #        size   offset    fstype   [fsize bsize bps/cpg]
>   c: 175735035        0    unused        0     0         # "raw" part,
> don't edi t
>   d: 18874368        0    4.2BSD        0     0     0
>   e: 156860667 18874368    4.2BSD        0     0     0
> Therefore, tried directly use fsck_ufs on both USB hard drive and USB stick
> to get file system clean up. All data got back now.
> The machine has run with FreeBSD 6.1 all the way to 7.2 without such
> problem. How can we determine what could go wrong in 8.0? FS or USB.


Error 5 means IO error, so probably the transport layer, USB or lower, is to 

Some things to check:

1) Make sure the connection for your memory stick is Ok.
2) Make sure there is enough power for your memory stick.

Regarding memory sticks:

Other operating systems do a port bus reset when the device has a problem. On 
FreeBSD we just try a software reset via the control endpoint. I guess that it 
is a device problem you are seeing. The USB stack in FreeBSD is faster than 
the old one, and maybe the faster queueing of mass storage requests trigger 
some hidden bugs in your device.

When the problem happens try:

sysctl hw.usb.umass.debug=-1


More information about the freebsd-bugs mailing list