Current-Users archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: usb flash drive removal (Re: Desktop NetBSD needs your help)
On 09/02/2009, Arnaud Lacombe <lacombar%gmail.com@localhost> wrote:
> On Mon, Feb 9, 2009 at 11:33 AM, Eric Haszlakiewicz
> <erh%nimenees.com@localhost> wrote:
> > On Mon, Feb 09, 2009 at 10:51:32AM -0500, Arnaud Lacombe wrote:
> >> Hi,
> >>
> >> On Mon, Feb 9, 2009 at 10:33 AM, Eric Haszlakiewicz
> <erh%nimenees.com@localhost> wrote:
> >> > I think that there should not _be_ a wrong time to remove a USB drive.
> >> > Yes, it may be hard to implement it in NetBSD, but it is entirely
> possible
> >> > to have a system that doesn't crash, and even does something reasonable.
> >> > (e.g. like providing an api for prompting the user to reattach the
> device)
> >> >
> >> You cannot ensure that the device is the same state than previously.
> >> You cannot even ensure that the newly plugged device is the same that
> >> the old one. The only sane thing to do is to clean-up everything.
> >
> > No, you're wrong. You CAN ensure, with a reasonably high degree of
> certainty,
> > that the device is the same as the old one.
>
> Sorry to say that, but if it's not 100% of certainty you won't go far.
>
>
> > Do all of the following:
> > 1) A device is unplugged
> > a) If there is no unwritten data cached, gracefully unmount the device and
> > revoke any open file descriptors when the device is unplugged.
> > b) If there _is_ data cached, keep the mount around in a suspended state,
> > saving information about the device and in-flight data until later.
> > b.i) Issue an event that alerts the user that he should plug the device
> > back in.
> > 2) When a device is reattached
> > a) If the device has a dependable hardware id of some kind, compare that
> > with what the previous id was.
>
> in the mean time, I took a picture with my camera/got a phone call,
> the file-system on the device changed, you replug-it, things are not
> as they used to be... and boom! There is billion reasons for a device
> to alter its file-system while it is supposedly doing nothing. In the
> best case, we crash, in the worst case, we corrupt the remote
> file-system. Not speaking that you'll need to keep track of every
> possible unique ID that can exist, good luck.
>
>
Many filesystems have "last mount time" in their superblock.
It's also possible to never attempt a reattach (and much easier and
less error-prone, too).
However, sometimes a bus reset can happen for various reasons on these
external buses, and these must be handled so you can't be ever 100%
sure that it's still the same device you are talking to.
What is not optional is that a sane system should not crash which is
what currently happens way too often.
Thanks
Michal
Home |
Main Index |
Thread Index |
Old Index