"Eject" and "Unmount"

Jannis Pohlmann jannis at xfce.org
Thu Feb 12 20:50:43 CET 2009


Am Thu, 12 Feb 2009 11:34:47 -0800
schrieb "Brian J. Tarricone" <bjt23 at cornell.edu>:

> Jannis Pohlmann wrote:
> > Am Wed, 11 Feb 2009 23:21:42 -0800
> > schrieb "Brian J. Tarricone" <bjt23 at cornell.edu>:
> > 
> >> On Thu, 12 Feb 2009 07:47:40 +0100 Yves-Alexis Perez wrote:
> >>
> >>> On jeu, 2009-02-12 at 14:03 +0800, Shou-Lien Chen wrote:
> >>>> hello all:
> >>>> According to
> >>>> http://www.xfce.org/documentation/api/thunar-vfs/ThunarVfsVolume.html#thunar-vfs-volume-is-ejectable
> >>>> The thunar_vfs_volume_is_ejectable () should return TRUE only if
> >>>> a medium is present and the volume is removable Is this mean it
> >>>> reference the hal key: storage.removable = true  ? I found my usb
> >>>> disk and sd card is treat as "reject" if I want remove them, but
> >>>> there is a storage.requires_eject = false key  found if I monitor
> >>>> my usb disk by lshal command
> >>>>
> >>>> Thus, which hal key is referenced by the thunar-vfs lib to judge
> >>>> if a volume need to be eject or unmount?
> >>> http://bugzilla.xfce.org/show_bug.cgi?id=3978
> >> Jannis, can you explain this change a bit better? Unless I'm
> >> misunderstanding, that fix is incorrect.
> > 
> > Well, what we had before was:
> > 
> >   /* check if HAL drive requires eject */
> >   if (THUNAR_VFS_VOLUME_HAL (volume)->requires_eject)
> >     return TRUE;
> > 
> >   /* otherwise we can only eject removable media, that are present
> >      (surprise, surprise) */
> >   return (thunar_vfs_volume_is_present (volume) 
> >           && thunar_vfs_volume_is_removable (volume));
> > 
> > which basically displayed the eject button for all mounted devices
> > such as USB sticks, CD drives etc. However, you can't eject USB
> > sticks,
> 
> Sure you can.  Try "eject -v /dev/sda" as root sometime (assuming sda
> is a USB mass storage device) and see what happens.  I've actually
> never seen that fail on any UMS device, though apparently there are a
> few that are broken (as in the bug report).

You're right, that works.

> > at least not with thunar_vfs_volume_hal_eject() which calls
> > exo-eject ... which fails.
> 
> Not sure what you mean; this has always worked fine for all my
> devices.

I always got an error dialog ("Unknown error") if I tried to eject my
USB disk or stick. Same for the users who reported this issue (the
original bug report I worked on was this one:

  http://bugzilla.xfce.org/show_bug.cgi?id=3978

> > Too bad that almost no API docs for HAL exist. I think this change
> > works fine but I agree with you: "requires" and "supports" are two
> > different things.
> 
> Well, there's the incomplete HAL spec, which tends to change with
> each minor (even micro) release of HAL, but that's often kinda
> useless.
> 
> >> thunar_vfs_volume_is_ejectable() should NOT correspond to
> >> storage.requires_eject.  Just because a volume doesn't *require*
> >> eject, it doesn't mean that it's not ejectable.
> > 
> > I know that logically these two things mean something different.
> > However, requires_eject seems to be true exactly for the devices
> > that *can* be ejected. At least I haven't seen a device where that
> > was not the case.
> 
> Then I guess you don't have many devices.  *Every* device I have seen 
> works fine when ejecting it.

I have at least a CD drive, two different USB disks and two USB sticks.
Not really exotic pieces of hardware but all the USB devices made
exo-eject fail. Maybe the bug was in exo-eject after all ... 

> >> As previously discussed, we should *not* have "Unmount" in Thunar's
> >> (or xfdesktop's) UI anywhere.  Any place where we do would be
> >> considered a usability bug.
> >>
> >> Ejecting normal USB media is entirely safe and probably a good idea
> >> (after unmounting), even if storage.requires_eject is false.
> > 
> > Ejecting normal USB media with exo-eject will fail. Right now what
> > we do is:
> > 
> >   1. Unmount (all devices)
> >   2. Eject (only devices with requires_eject=true)
> > 
> > What we could do is:
> > 
> >   1. Unmount (all devices)
> >   2. Eject and any ignore errors from exo-eject (all devices)
> > 
> > I doubt this is a good idea though because for some devices you
> > actually want errors of exo-eject to be displayed. So, option three
> > is:
> > 
> >   1. Unmount (all devices)
> >   2. Eject (all devices) and ignore errors from exo-eject (only
> > devices with requires_eject=false)
> 
> Yeah, this probably makes the most sense.

In GIO we have g_volume_can_eject() which will kinda solve this issue ;)

> The problem with not ejecting a device when you're done with it is
> that it won't disappear from Thunar's shortcuts pane (or 
> xfce4-volstatus-icon's volume list).  If you only unmount a device,
> it can be somewhat confusing to users of other OSes as to whether or
> not it really is safe to remove it.  Ejecting it actually tells the
> kernel to "forget" what it knows about the device's partitions
> entirely.
> 
> > But since the current way of doing it seems to be fine (except for
> > the mount/unmount labels, which we could change without adding new
> > strings by the way) and GIO/GVfs will completely change how this
> > works anyway, I'm not really interested in putting too much effort
> > into it right now.
> 
> Yeah, good point.

I mean, if this is a bug in exo-eject, we should probably fix exo and
revert the little change in Thunar to make 4.6 users happy. 

  - Jannis
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 197 bytes
Desc: not available
URL: <http://mail.xfce.org/pipermail/xfce4-dev/attachments/20090212/1693bf1e/attachment.pgp>


More information about the Xfce4-dev mailing list