Comment 3 for bug 19586

Revision history for this message
perpetualrabbit (perpetualrabbit) wrote :

I totally agree with this issue in fact being a bug.

Why?
------
Nautilus provides a GUI in order to take things like save mounting/unmounting
to preserve filesystem integrity down from system administrator level to
everyday user level.
I am a system administrator for 70 linux desktop, amongst other things, but a
lot of people are defecting to Apple over issues like these. OS X _does_ give
helpful information about which process is blocking umount, even if the process
is running in a shell.

Outline how to solve:
-------------------------
Using information from `lsof´ you can figure out which process is blocking
the umount. Furthermore the PID can be used to identify the window or terminal
(even text console) that belongs to it. DBUS can then be used to signal the
window manager to bring the offending windows to the foreground.
Signals can then be sent the programs to initiate the `save files´ dialog.
In the case of text consoles or terminal windows the GUI can present a dialog
to close the programs running from those shells or close the shells themselves.

This is a solvable problem in most common cases, and actually I think quite
straightforward. It just needs some scripts parsing lsof, some interaction between
filemanager, windowmanager and dbus, and a bit of heuristics to cover the most
common cases.
This is a low hanging fruit in terms of improving the user experience.

Whose responsibility?
--------------------------
Enabling the average clueless user to unmount usb sticks is core functionality
in a desktop OS.
Since Canonical aims to offer an easy to use Linux distro, primarily based on
Gnome, I think that this _core functionality_ should be provided by Canonical.
Since Canonical is hiring people to work on kernel, X and Gnome/KDE, I
certainly feel that you cannot simply say this is an upstream issue.
Upstream has different priorities. Since this is probably a relatively easy
thing to solve, no major new subsystem needs to be invented, just using existing
subsystems and programs like `lsof´, I think Canonical should get involved with
upstream to fix this once and for all.