[Top][All Lists]

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

Re: Tramp never unmounts sshfs volumes

From: Stephen Gildea
Subject: Re: Tramp never unmounts sshfs volumes
Date: Sat, 02 Oct 2021 20:31:41 -0700

Michael Albinus <> wrote:

>   > 3. Unmount if this process did the mount.  This is your idea of an
>   > "unmount on cleanup" bit.  As with case 2, if this process did not do
>   > the mount, Tramp would have to handle an unexpectedly closed connection.
>   >
>   > 4. Every Emacs uses its own mount point.  Multiple mount points could
>   > still share an ssh connection but would no longer share the sshfs cache.
>   > This option seems the simplest and cleanest to implement.
>   I'm just working on 3, controlled by a user option. Let's see how it
>   goes (with your testing), if not satisfying we'll have 4.
>   Variant 4 has the disadvantage to leave several mount points when Emacs
>   crashes or does not pass the cleanup machinery for whatever reason.

I tested the patch you sent me that implements variant 3.

tramp-cleanup-this-connection fails to unmount.  The problem is that
vec is not a member of tramp-fuse-mount-points:
    (tramp-file-name sshfs nil nil otherhost nil /home/gildea/ nil)
    ((tramp-file-name sshfs nil nil otherhost nil /home/gildea/afile nil))

tramp-cleanup-all-connections and exiting Emacs both do unmount, as expected.
However, they leave behind the mount point directory, 

Two Emacs processes accessing the same remote host can confuse each other:
   . open an sshfs file in Emacs 1
   . open an sshfs file in Emacs 2 on the same remote host
   . cleanup-all in Emacs 1
   . try to access file again in Emacs 2 - fails: No such file or directory

Also while testing I came across two behaviors that could be better.
These are not regressions, as un-patched Tramp behaves the same.

If I open a non-existent file, e.g.,
The following gets logged to *Messages*
File is missing: Opening input file No such file or directory 
and the buffer is shown as editing the local file 

Tramp will not share the ssh connection with an existing connection to
the remote host, because it uses its own ControlPath.  This makes it
harder to use Tramp with a remote host that requires user action to
authenticate, as many two-factor methods do.  I would prefer that
Tramp not set its own options and let the options in my .ssh/config
control the connection.

reply via email to

[Prev in Thread] Current Thread [Next in Thread]