suboptimal handling of accidentally pulled usb devices (5.4)
Matthias Buelow
mkb at incubus.de
Sat Apr 9 09:59:54 PDT 2005
Hi folks,
every so often, I forget to unmount my ipod (usb2) before pulling it
from my PC. While this and the mess that ensues is clearly a user
error, it would be nice if this exceptional situation would get handled
a bit more gracefully by the OS. What happens now is that I cannot use
the device anymore ("Resource unavailable") until I reboot. Trying to
unmount the still mounted filesystem (no matter if the device is plugged
back in or not) simply gives:
Apr 9 18:43:44 drjekyll kernel: fsync: giving up on dirty: 0xc305ca50: tag msdo
sfs, type VREG, usecount 1, writecount 0, refcount 1, flags (VV_OBJBUF), lock ty
pe msdosfs: EXCL (count 1) by thread 0xc2d3ce10 (pid 3332)
Apr 9 18:43:44 drjekyll kernel: startcluster 7400, dircluster 38092, diroffset
320, on dev (4, 30)
I see two problems here:
1) If the OS notices that the (removable) device has disappeared, can't
it just throw away the remaining buffers? I guess trying to write
the remaining buffers if the device is reinserted is a no-option,
since the state of the intermittently removed device is unknown. But
clearly, just insisting on keeping the buffers without any chance of
ever writing them back is not correct behaviour (and I guess will
cause problems at shutdown, haven't checked that now).
2) Umount -f completely froze the machine and I had to powercycle. This
probably should be fixed.
This is on 5.4-PRERELEASE/i386, using ehci for the usb2 device.
More info available on request.
mkb.
More information about the freebsd-stable
mailing list