Re: Flames over -- Re: Which is simpler?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Feb 13, 2006, at 21:09, Phillip Susi wrote:
Kyle Moffett wrote:
No, that information is the most reliable that can be obtained. It tells us that we can no longer make any guarantees about the device or its state. The USB spec is quite clear on this point.

That is what it says but the kernel is interpreting it as "this device HAS been removed" rather than "this device MAY have been removed". That is wrong and should be fixed.

No, that's _exactly_ what the spec says (well, not verbatim but close enough). When you disconnect, both the master and slave devices are perfectly free to assume that the connection is completely broken and no state is maintained. Anything that breaks that assumption is against the spec and likely to break in odd scenarios.

[multiple data-loss arguments]

Which causes worse data-loss, writing out cached pages and filesystem metadata to a filesystem that has changed in the mean-time (possibly allocating those for metadata, etc) or forcibly unmounting it as though the user pulled the cable? Most filesystems are designed to handle the latter (it's the same as a hard-shutdown), whereas _none_ are designed to handle the former.

A good set of suspend scripts should handle the hardware-suspend with no extra work because hardware supporting hardware-suspend basically inevitably supports USB low-power-mode, and handle software-suspend by either forcibly syncing and unmounting USB filesystems or by failing the suspend and asking the user to. You also could patch the kernel to fail a powerdown software suspend if some USB device is mounted or otherwise unremovably in-use.

In fact, I would argue that turning off all the busses completely when you want to maintain a connection to a device is broken. If you want to maintain the connection, you should keep the busses powered. Otherwise, according to the USB spec, it's the _kernel_ that is terminating the connection, and assuming that it exists after explicitly terminating it is wrong.

Yes, assuming that it exists is wrong. Probing the hardware and seeing that it exists and is _probably_ the same device is entirely different. In that case it is preferable to assume the probable case rather than the improbable one because it will lead to less data loss.

Except that would make Linux broken with respect to the USB spec. It is fallacious to assume that a USB device that the kernel has told to disconnect will still have the same state when the kernel tries to reconnect, even _if_ you could reliably identify it (which you can't because there is no serial number of any sort on a lot of devices.

Cheers,
Kyle Moffett

--
I lost interest in "blade servers" when I found they didn't throw knives at people who weren't supposed to be in your machine room.
  -- Anthony de Boer


-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

[Index of Archives]     [Kernel Newbies]     [Netfilter]     [Bugtraq]     [Photo]     [Stuff]     [Gimp]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Video 4 Linux]     [Linux for the blind]     [Linux Resources]
  Powered by Linux