* Fixing dired hangs when NFS mount goes AWOL
@ 2011-10-05 18:50 Michael Olson
2011-10-05 21:27 ` Chong Yidong
0 siblings, 1 reply; 18+ messages in thread
From: Michael Olson @ 2011-10-05 18:50 UTC (permalink / raw
To: Emacs Development Discussions
Would you consider adding "-l" to the list of default arguments for
`directory-free-space-args'? This will fix an issue where attempting
to open dired buffers with ls-lisp enabled hangs due to an AWOL NFS
mount. Considering that the check is skipped if the current directory
is on a remote filesystem, I think this is a reasonable default.
--
Michael Olson | http://mwolson.org/
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: Fixing dired hangs when NFS mount goes AWOL
2011-10-05 18:50 Fixing dired hangs when NFS mount goes AWOL Michael Olson
@ 2011-10-05 21:27 ` Chong Yidong
2011-10-05 21:59 ` Michael Olson
0 siblings, 1 reply; 18+ messages in thread
From: Chong Yidong @ 2011-10-05 21:27 UTC (permalink / raw
To: Michael Olson; +Cc: Emacs Development Discussions
Michael Olson <mwolson@gnu.org> writes:
> Would you consider adding "-l" to the list of default arguments for
> `directory-free-space-args'? This will fix an issue where attempting
> to open dired buffers with ls-lisp enabled hangs due to an AWOL NFS
> mount. Considering that the check is skipped if the current directory
> is on a remote filesystem, I think this is a reasonable default.
If the check is skipped for remote directories, how does the hang occur?
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: Fixing dired hangs when NFS mount goes AWOL
2011-10-05 21:27 ` Chong Yidong
@ 2011-10-05 21:59 ` Michael Olson
2011-10-05 22:14 ` Glenn Morris
0 siblings, 1 reply; 18+ messages in thread
From: Michael Olson @ 2011-10-05 21:59 UTC (permalink / raw
To: Chong Yidong; +Cc: Emacs Development Discussions
The check is only skipped if the directory you're trying to insert
into dired is remote. If the dir is local, it will attempt the check,
and the 'df' call will hang because it's waiting on info from the NFS
filesystem.
On Wed, Oct 5, 2011 at 2:27 PM, Chong Yidong <cyd@stupidchicken.com> wrote:
> Michael Olson <mwolson@gnu.org> writes:
>
>> Would you consider adding "-l" to the list of default arguments for
>> `directory-free-space-args'? This will fix an issue where attempting
>> to open dired buffers with ls-lisp enabled hangs due to an AWOL NFS
>> mount. Considering that the check is skipped if the current directory
>> is on a remote filesystem, I think this is a reasonable default.
>
> If the check is skipped for remote directories, how does the hang occur?
>
--
Michael Olson | http://mwolson.org/
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: Fixing dired hangs when NFS mount goes AWOL
2011-10-05 21:59 ` Michael Olson
@ 2011-10-05 22:14 ` Glenn Morris
2011-10-05 22:34 ` Michael Olson
0 siblings, 1 reply; 18+ messages in thread
From: Glenn Morris @ 2011-10-05 22:14 UTC (permalink / raw
To: Michael Olson; +Cc: Chong Yidong, Emacs Development Discussions
>>> Would you consider adding "-l" to the list of default arguments for
>>> `directory-free-space-args'? This will fix an issue where attempting
>>> to open dired buffers with ls-lisp enabled hangs due to an AWOL NFS
>>> mount.
Could you explain what the issue actually is?
Normally even trying to ls a directory containing eg a link to a missing
NFS directory hangs.
Are you saying that doing dired on a local directory that contains a
link to a missing NFS mount works, but hangs in calling df to calculate
the 'total used xxx available yyy' part?
What does ls-lisp have to do with it?
I can see how adding -l might help with a plain `df' call, but how can
it help `df DIR' if DIR is local?
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: Fixing dired hangs when NFS mount goes AWOL
2011-10-05 22:14 ` Glenn Morris
@ 2011-10-05 22:34 ` Michael Olson
2011-10-05 22:55 ` Glenn Morris
0 siblings, 1 reply; 18+ messages in thread
From: Michael Olson @ 2011-10-05 22:34 UTC (permalink / raw
To: Glenn Morris; +Cc: Chong Yidong, Emacs Development Discussions
On Wed, Oct 5, 2011 at 3:14 PM, Glenn Morris <rgm@gnu.org> wrote:
>
>>>> Would you consider adding "-l" to the list of default arguments for
>>>> `directory-free-space-args'? This will fix an issue where attempting
>>>> to open dired buffers with ls-lisp enabled hangs due to an AWOL NFS
>>>> mount.
>
> Could you explain what the issue actually is?
> Normally even trying to ls a directory containing eg a link to a missing
> NFS directory hangs.
>
> Are you saying that doing dired on a local directory that contains a
> link to a missing NFS mount works, but hangs in calling df to calculate
> the 'total used xxx available yyy' part?
The issue is that regardless of what directory you're trying to view
using dired, 'df' apparently still tries to stat *every* known
filesystem, including remote filesystems, before limiting its output
to just that of the filsystem for the given directory. Changing the
df options by adding '-l' makes df only consider local filesystems, so
that it never tries to stat an NFS filesystem.
> What does ls-lisp have to do with it?
The call order is:
dired-insert-directory
insert-directory (version in ls-lisp.el is used)
get-free-disk-space
-> calls 'df'
> I can see how adding -l might help with a plain `df' call, but how can
> it help `df DIR' if DIR is local?
Apparently it's an issue in how df is implemented, in that it still
attempts to stat all existing mounts before narrowing the listing by
the directory param. Possibly to resolve symlinks and get a
"truename"?
--
Michael Olson | http://mwolson.org/
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: Fixing dired hangs when NFS mount goes AWOL
2011-10-05 22:34 ` Michael Olson
@ 2011-10-05 22:55 ` Glenn Morris
2011-10-05 23:14 ` Glenn Morris
2011-10-06 18:45 ` Michael Olson
0 siblings, 2 replies; 18+ messages in thread
From: Glenn Morris @ 2011-10-05 22:55 UTC (permalink / raw
To: Michael Olson; +Cc: Chong Yidong, Emacs Development Discussions
Michael Olson wrote:
> insert-directory (version in ls-lisp.el is used)
I'm surprised this succeeds if there is a missing NFS mount.
You're saying the NFS mount is outside the directory being listed, but
still hangs df?
> Apparently it's an issue in how df is implemented, in that it still
> attempts to stat all existing mounts before narrowing the listing by
> the directory param.
Wow, really? That seems like an odd way for it to be implemented.
Quick search gives eg
http://lists.gnu.org/archive/html/bug-coreutils/2003-03/msg00014.html
which suggests that df is aware of such issues and tries to avoid them.
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: Fixing dired hangs when NFS mount goes AWOL
2011-10-05 22:55 ` Glenn Morris
@ 2011-10-05 23:14 ` Glenn Morris
2011-10-05 23:27 ` Michael Olson
2011-10-06 18:45 ` Michael Olson
1 sibling, 1 reply; 18+ messages in thread
From: Glenn Morris @ 2011-10-05 23:14 UTC (permalink / raw
To: Michael Olson; +Cc: Chong Yidong, Emacs Development Discussions
But, -l is probably not an option for the default, because:
cd /path/to/remote/nfs
df -l .
-> "df: no file systems processed"
which breaks Dired's "total used" line on healthy NFS mounts.
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: Fixing dired hangs when NFS mount goes AWOL
2011-10-05 23:14 ` Glenn Morris
@ 2011-10-05 23:27 ` Michael Olson
2011-10-05 23:31 ` Michael Olson
2011-10-06 12:25 ` Stefan Monnier
0 siblings, 2 replies; 18+ messages in thread
From: Michael Olson @ 2011-10-05 23:27 UTC (permalink / raw
To: Glenn Morris; +Cc: Chong Yidong, Emacs Development Discussions
On Wed, Oct 5, 2011 at 4:14 PM, Glenn Morris <rgm@gnu.org> wrote:
>
> But, -l is probably not an option for the default, because:
>
> cd /path/to/remote/nfs
> df -l .
>
> -> "df: no file systems processed"
>
> which breaks Dired's "total used" line on healthy NFS mounts.
>
Nuts, I thought (file-remote-p '/some/nfs/mount') would return
non-nil, but it doesn't.
So it seems like the only viable solution is to give users a way to
suppress the totals line in ls-lisp's insert-directory, which would
get rid of the df call.
--
Michael Olson | http://mwolson.org/
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: Fixing dired hangs when NFS mount goes AWOL
2011-10-05 23:27 ` Michael Olson
@ 2011-10-05 23:31 ` Michael Olson
2011-10-06 12:25 ` Stefan Monnier
1 sibling, 0 replies; 18+ messages in thread
From: Michael Olson @ 2011-10-05 23:31 UTC (permalink / raw
To: Glenn Morris; +Cc: Chong Yidong, Emacs Development Discussions
On Wed, Oct 5, 2011 at 4:27 PM, Michael Olson <mwolson@gnu.org> wrote:
> On Wed, Oct 5, 2011 at 4:14 PM, Glenn Morris <rgm@gnu.org> wrote:
>>
>> But, -l is probably not an option for the default, because:
>>
>> cd /path/to/remote/nfs
>> df -l .
>>
>> -> "df: no file systems processed"
>>
>> which breaks Dired's "total used" line on healthy NFS mounts.
>>
>
> Nuts, I thought (file-remote-p '/some/nfs/mount') would return
> non-nil, but it doesn't.
>
> So it seems like the only viable solution is to give users a way to
> suppress the totals line in ls-lisp's insert-directory, which would
> get rid of the df call.
(Or just customize directory-free-space-args in the first place, which
kind of already has this effect.)
--
Michael Olson | http://mwolson.org/
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: Fixing dired hangs when NFS mount goes AWOL
2011-10-05 23:27 ` Michael Olson
2011-10-05 23:31 ` Michael Olson
@ 2011-10-06 12:25 ` Stefan Monnier
2011-10-06 13:18 ` Michael Albinus
1 sibling, 1 reply; 18+ messages in thread
From: Stefan Monnier @ 2011-10-06 12:25 UTC (permalink / raw
To: Michael Olson; +Cc: Chong Yidong, Emacs Development Discussions
> Nuts, I thought (file-remote-p '/some/nfs/mount') would return
> non-nil, but it doesn't.
The concept of "remote" file is a very fuzzy one, which means very
different things to different people in different cases.
I tend to agree that file-remote-p should return non-nil on NFS mounted
filesystems, but that's simply not implemented. Patch welcome,
Stefan
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: Fixing dired hangs when NFS mount goes AWOL
2011-10-06 12:25 ` Stefan Monnier
@ 2011-10-06 13:18 ` Michael Albinus
2011-10-06 13:25 ` Eli Zaretskii
2011-10-06 15:22 ` Stefan Monnier
0 siblings, 2 replies; 18+ messages in thread
From: Michael Albinus @ 2011-10-06 13:18 UTC (permalink / raw
To: Stefan Monnier; +Cc: Chong Yidong, Michael Olson, Emacs Development Discussions
Stefan Monnier <monnier@iro.umontreal.ca> writes:
>> Nuts, I thought (file-remote-p '/some/nfs/mount') would return
>> non-nil, but it doesn't.
>
> The concept of "remote" file is a very fuzzy one, which means very
> different things to different people in different cases.
> I tend to agree that file-remote-p should return non-nil on NFS mounted
> filesystems, but that's simply not implemented. Patch welcome,
This will break Tramp completely. Please don't change its current behaviour.
> Stefan
Best regards, Michael.
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: Fixing dired hangs when NFS mount goes AWOL
2011-10-06 13:18 ` Michael Albinus
@ 2011-10-06 13:25 ` Eli Zaretskii
2011-10-06 15:22 ` Stefan Monnier
1 sibling, 0 replies; 18+ messages in thread
From: Eli Zaretskii @ 2011-10-06 13:25 UTC (permalink / raw
To: Michael Albinus; +Cc: cyd, mwolson, monnier, emacs-devel
> From: Michael Albinus <michael.albinus@gmx.de>
> Date: Thu, 06 Oct 2011 15:18:36 +0200
> Cc: Chong Yidong <cyd@stupidchicken.com>, Michael Olson <mwolson@gnu.org>,
> Emacs Development Discussions <emacs-devel@gnu.org>
>
> Stefan Monnier <monnier@iro.umontreal.ca> writes:
>
> >> Nuts, I thought (file-remote-p '/some/nfs/mount') would return
> >> non-nil, but it doesn't.
> >
> > The concept of "remote" file is a very fuzzy one, which means very
> > different things to different people in different cases.
> > I tend to agree that file-remote-p should return non-nil on NFS mounted
> > filesystems, but that's simply not implemented. Patch welcome,
>
> This will break Tramp completely. Please don't change its current behaviour.
I was going to say precisely that, but Michael beat me to it.
I think past discussions of this particular calamity concluded that we
need a separate API for this, something like filesystem-mounted-p.
The uses of each API are expected to be very different.
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: Fixing dired hangs when NFS mount goes AWOL
2011-10-06 13:18 ` Michael Albinus
2011-10-06 13:25 ` Eli Zaretskii
@ 2011-10-06 15:22 ` Stefan Monnier
2011-10-06 17:58 ` Michael Albinus
1 sibling, 1 reply; 18+ messages in thread
From: Stefan Monnier @ 2011-10-06 15:22 UTC (permalink / raw
To: Michael Albinus
Cc: Chong Yidong, Michael Olson, Emacs Development Discussions
>> The concept of "remote" file is a very fuzzy one, which means very
>> different things to different people in different cases.
>> I tend to agree that file-remote-p should return non-nil on NFS mounted
>> filesystems, but that's simply not implemented. Patch welcome,
> This will break Tramp completely. Please don't change its current behaviour.
Why would it break Tramp? This would only change the behavior of
file-remote-p for file names which are not handled by Tramp, so it
shouldn't break Tramp any more than adding some other file-name-handler
for other kinds of remote magic file names.
Stefan
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: Fixing dired hangs when NFS mount goes AWOL
2011-10-06 15:22 ` Stefan Monnier
@ 2011-10-06 17:58 ` Michael Albinus
2011-10-06 21:18 ` Stefan Monnier
0 siblings, 1 reply; 18+ messages in thread
From: Michael Albinus @ 2011-10-06 17:58 UTC (permalink / raw
To: Stefan Monnier; +Cc: Chong Yidong, Michael Olson, Emacs Development Discussions
Stefan Monnier <monnier@iro.umontreal.ca> writes:
>>> The concept of "remote" file is a very fuzzy one, which means very
>>> different things to different people in different cases.
>>> I tend to agree that file-remote-p should return non-nil on NFS mounted
>>> filesystems, but that's simply not implemented. Patch welcome,
>> This will break Tramp completely. Please don't change its current behaviour.
>
> Why would it break Tramp? This would only change the behavior of
> file-remote-p for file names which are not handled by Tramp, so it
> shouldn't break Tramp any more than adding some other file-name-handler
> for other kinds of remote magic file names.
There was a very long discussion about, see
<http://thread.gmane.org/gmane.emacs.devel/87506/focus=87506>
In short:
Tramp uses file-remote-p internally. OK, this could be replaced by an
internal function.
Other packages use it as well, inside and outside core Emacs. We didn't
want to propagate tramp-* functions outside Tramp; file-remote-p is the
check to be used when necessary. Not so important for basic file name
operations, but needed for all process related things.
> Stefan
Best regards, Michael.
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: Fixing dired hangs when NFS mount goes AWOL
2011-10-05 22:55 ` Glenn Morris
2011-10-05 23:14 ` Glenn Morris
@ 2011-10-06 18:45 ` Michael Olson
1 sibling, 0 replies; 18+ messages in thread
From: Michael Olson @ 2011-10-06 18:45 UTC (permalink / raw
To: Glenn Morris; +Cc: Chong Yidong, Emacs Development Discussions
On Wed, Oct 5, 2011 at 3:55 PM, Glenn Morris <rgm@gnu.org> wrote:
> Michael Olson wrote:
>> Apparently it's an issue in how df is implemented, in that it still
>> attempts to stat all existing mounts before narrowing the listing by
>> the directory param.
>
> Wow, really? That seems like an odd way for it to be implemented.
>
> Quick search gives eg
>
> http://lists.gnu.org/archive/html/bug-coreutils/2003-03/msg00014.html
>
> which suggests that df is aware of such issues and tries to avoid them.
I'm very skeptical that the `df' issue is actually fixed upstream,
especially given that the patch seems to be almost entirely
documentation. Maybe it deserves to be bumped there. Attempts to
repro the issue have been unsuccessful, and I've spent about all the
time I care to in attempting it.
OS: Ubuntu 11.04
df (GNU coreutils) 8.5
--
Michael Olson | http://mwolson.org/
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: Fixing dired hangs when NFS mount goes AWOL
2011-10-06 17:58 ` Michael Albinus
@ 2011-10-06 21:18 ` Stefan Monnier
2011-10-07 11:43 ` Michael Albinus
0 siblings, 1 reply; 18+ messages in thread
From: Stefan Monnier @ 2011-10-06 21:18 UTC (permalink / raw
To: Michael Albinus
Cc: Chong Yidong, Michael Olson, Emacs Development Discussions
>> Why would it break Tramp?
> There was a very long discussion about, see
> <http://thread.gmane.org/gmane.emacs.devel/87506/focus=87506>
I know, I participated in that thread. I fail to see how it answers
the question.
> Tramp uses file-remote-p internally. OK, this could be replaced by an
> internal function.
It depends on whether it uses it right or not.
> Other packages use it as well, inside and outside core Emacs.
What does it mean "use it as well"? In which way are those uses
incompatible with a file-remote-p which returns non-nil for SSHFS and
NFS mounts?
> Not so important for basic file name operations, but needed for all
> process related things.
These are the uses which should use something like
file-accessible-directory-p instead of file-remote-p, right?
Stefan
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: Fixing dired hangs when NFS mount goes AWOL
2011-10-06 21:18 ` Stefan Monnier
@ 2011-10-07 11:43 ` Michael Albinus
2011-10-07 13:41 ` Stefan Monnier
0 siblings, 1 reply; 18+ messages in thread
From: Michael Albinus @ 2011-10-07 11:43 UTC (permalink / raw
To: Stefan Monnier; +Cc: Chong Yidong, Michael Olson, Emacs Development Discussions
Stefan Monnier <monnier@iro.umontreal.ca> writes:
>>> Why would it break Tramp?
>> There was a very long discussion about, see
>> <http://thread.gmane.org/gmane.emacs.devel/87506/focus=87506>
>
> I know, I participated in that thread. I fail to see how it answers
> the question.
It was a more general discussion about changing the semantics of
file-remote-p. Caused by a similar problem (remote shares in MS Windows,
which are not responsive).
The discussion went into the direction, that maybe an opposite function,
file-local-p, might be useful. An interesting argument was given by
Andreas Schwab: what about mounted CD-ROMs, or USB devices? Are they
"local" or "remote".
>> Tramp uses file-remote-p internally. OK, this could be replaced by an
>> internal function.
>
> It depends on whether it uses it right or not.
Whatever is TRT. In this, we disagree.
>> Other packages use it as well, inside and outside core Emacs.
>
> What does it mean "use it as well"? In which way are those uses
> incompatible with a file-remote-p which returns non-nil for SSHFS and
> NFS mounts?
>
>> Not so important for basic file name operations, but needed for all
>> process related things.
>
> These are the uses which should use something like
> file-accessible-directory-p instead of file-remote-p, right?
A needed functionality is to translate between "local" file names (on
the remote host), and "remote" file names in the sense of Tramp. The
usual implementation is
local -> remote: (concat (file-remote-p default-directory) filename)
remote -> local: (file-remote-p filename 'localname)
> Stefan
Best regards, Michael.
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: Fixing dired hangs when NFS mount goes AWOL
2011-10-07 11:43 ` Michael Albinus
@ 2011-10-07 13:41 ` Stefan Monnier
0 siblings, 0 replies; 18+ messages in thread
From: Stefan Monnier @ 2011-10-07 13:41 UTC (permalink / raw
To: Michael Albinus
Cc: Chong Yidong, Michael Olson, Emacs Development Discussions
>>> Not so important for basic file name operations, but needed for all
>>> process related things.
>> These are the uses which should use something like
>> file-accessible-directory-p instead of file-remote-p, right?
> A needed functionality is to translate between "local" file names (on
> the remote host), and "remote" file names in the sense of Tramp. The
> usual implementation is
> local -> remote: (concat (file-remote-p default-directory) filename)
> remote -> local: (file-remote-p filename 'localname)
Yes, file-remote-p for NFS would need to pay attention to such problems,
and it might introduce bugs, but that doesn't mean that file-remote-p
can't be used for NFS.
Stefan
^ permalink raw reply [flat|nested] 18+ messages in thread
end of thread, other threads:[~2011-10-07 13:41 UTC | newest]
Thread overview: 18+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-10-05 18:50 Fixing dired hangs when NFS mount goes AWOL Michael Olson
2011-10-05 21:27 ` Chong Yidong
2011-10-05 21:59 ` Michael Olson
2011-10-05 22:14 ` Glenn Morris
2011-10-05 22:34 ` Michael Olson
2011-10-05 22:55 ` Glenn Morris
2011-10-05 23:14 ` Glenn Morris
2011-10-05 23:27 ` Michael Olson
2011-10-05 23:31 ` Michael Olson
2011-10-06 12:25 ` Stefan Monnier
2011-10-06 13:18 ` Michael Albinus
2011-10-06 13:25 ` Eli Zaretskii
2011-10-06 15:22 ` Stefan Monnier
2011-10-06 17:58 ` Michael Albinus
2011-10-06 21:18 ` Stefan Monnier
2011-10-07 11:43 ` Michael Albinus
2011-10-07 13:41 ` Stefan Monnier
2011-10-06 18:45 ` Michael Olson
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/emacs.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).