Comment 20 for bug 210468

Revision history for this message
Paul Smith (psmith-gnu) wrote :

Just a comment on point (c) above: I don't think this is quite as innocuous as you suppose. While looking at the root of a normal automount point for a non-existent directory (or two, in this case) isn't so bad (except for the annoying log spam), there are various types of maps which take any random set of characters and try to do something with them.

For example, if you try to access /net/.Trash then (on systems where it's enabled) a script /etc/auto.net is invoked with an argument of ".Trash" as the putative hostname. This leads to attempts to do DNS lookups, run showmount, and other dodgy operations which, on a well-behaved system, should still not be a major concern but are significantly more costly than a simple directory lookup failure.

Also, some maps, commonly /home maps, avoid very long lists in their maps by using map key substitution; so there's one entry containing a "&" and whatever text is used for that, a mount request is made for that (for example in /home/psmith "&" would be "psmith" and the mount request would be made with that--if you try /home/.Trash then & is ".Trash" and a mount request is made for that). This can also cause problems, most especially for the server which is constantly rejecting all these invalid mount requests from all the hosts on the network. It can also cause delays if the server or network is busy.

I do agree this should be fixed: I can't think of any situation where it would be legitimate and reasonable to have a .Trash directory in an automount map mount point (mount point of type autofs). Everything in an autofs mount point is, by definition, a partition mount itself which means that any .Trash entry would have to be a seperately mounted partition... which means that the real trash would be in .../.Trash/.Trash --- right?

It seems reasonable to me to actually make the fs types that gvfsd-trash looks in be configurable, in some way. This is a larger change of course, but it's the common way to avoid hardcoding this stuff (for things like slocate etc.)

If someone has a patch they would like me to test, I can do that.