From: Chuck Lever <chuck.lever@oracle.com>
To: Steve Dickson <SteveD@redhat.com>
Cc: nfs@lists.sourceforge.net
Subject: Re: Status of mount.nfs
Date: Sat, 28 Jul 2007 17:00:15 -0400 [thread overview]
Message-ID: <46ABAE5F.1000208@oracle.com> (raw)
In-Reply-To: <46AB4290.4090408@RedHat.com>
[-- Attachment #1: Type: text/plain, Size: 4551 bytes --]
Steve Dickson wrote:
> Chuck Lever wrote:
>> Steve Dickson wrote:
>>> Chuck Lever wrote:
>>>>
>>>> And umount.nfs always uses TCP for the mountd request. I have a
>>>> patch that fixes that to behave more like mount.nfs does, which I
>>>> will forward in the next day or two.
>>> thats a bug... umount should use the protocol the mount did...
>>> I thought I had fixed that... :-\
>>
>> Nope... umount.nfs sets the transport protocol to TCP explicitly
>> before doing the umount call. Check out
>> utils/mount/nfsumount.c:_nfsumount() .
>>
>>>> I notice some problems if a share is mounted with TCP, but the
>>>> server later disables TCP -- umount.nfs hiccups on that when it
>>>> tries to umount using the same protocol as listed in /etc/mtab.
>>>> Perhaps relying on /etc/mtab for setting the umount protocol is
>>>> unnecessary.
>>> I think I was using /proc/mounts...
>>
>> umount.nfs uses getmntdirbackward(), which probes /etc/mtab, as far as
>> I can tell. One problem with this is that often the effective
>> transport protocol isn't listed in /etc/mtab at all, if, say, the user
>> requests TCP and the server supports only UDP.
> This got lost in the translation... In older mount code (i.e. the one
> in utils-linux) /proc/mounts is used which is a much simpler way
> of dealing with this... imho..
Miklos seems intent on eliminating /etc/mtab anyway...
>> I can't see why we need to refer back to either file to determine the
>> transport protocol for a umount request. Whatever transport mountd is
>> advertising at the moment is what should be used, right?
> Well for firewall reasons you generally want to use the protocol
> that the mount used...
That could have been a very long time ago, even months, and the server
settings may have changed. Thus sending what mount used seems
inherently unreliable. The race window is enormous!
>> [ Steve, since you have a different recollection of how all this mount
>> stuff works, I wonder if Amit took an older version of mount when he
>> split out the new mount.nfs helper... Can you verify this? Maybe
>> there are some fixes you made that need to be ported over. ]
> No... I pretty sure I had Amit use the latest and greatest...
> I just think there was some decisions made or liberties taken
> without a complete understand of what the ramification were...
Thanks for checking on this. I worried we may have missed some
important bug fixes.
>>>> Also, can we get rid of the clnt_ping()? If not, can we document
>>>> why it is there? It adds two extra round trips to the whole
>>>> process. If error reporting is the problem, maybe we can try the
>>>> pings only if the kernel part of the mount process fails?
>>> How do we avoid hang down deep in RPC land (governed by
>>> uncontrollable timeout) when either mountd or nfsd are not up?
>>
>> I guess I don't see how a NULL RPC is different than sending a real
>> request, when we're talking about a single MNT request from a user
>> space application. If the service is down, it fails either way.
> As long as the request does not get caught up in some unreasonably
> long timeout in the RPC code... there is no difference... Waiting
> 60sec for each retry or to find out some service is down would
> not be a good thing when a machine is coming up...
>
>>
>>> That was the main reason for the ping. Since neither portmapper or
>>> rpcbind ping their services before they hand out the ports, there
>>> is really no way of telling where the server is up? So to avoid
>>> the hang, we ping them... Sure its costly network wise, but
>>> hanging during a boot because a server is not responding is
>>> a bit more costly... imho...
>>
>> My feeling is we should then fix the kernel to behave more reasonably.
>> I recently changed the kernel's rpcbind client to use "intr" instead
>> of "nointr" for its requests, for example. Is it practical to track
>> down the hangs and fix them?
> In the kernel yes, in glibc no because that code will not
> change, period!
Well, if libtirpc is added to nfs-utils, the mount command could use
that instead. We'd be able to fix any bugs in libtirpc quite easily.
That seems like an excellent way to address every problem with glibc's
RPC implementation, and immediately have a "simple" use case for testing
libtirpc (or whatever we have to replace the RPC functionality in glibc).
>> Is it just the long time waiting for a failure, or do the mount
>> processes actually get totally stuck?
> Its a long time wait that can not be controlled...
Ok.
[-- Attachment #2: chuck.lever.vcf --]
[-- Type: text/x-vcard, Size: 259 bytes --]
begin:vcard
fn:Chuck Lever
n:Lever;Chuck
org:Oracle Corporation;Corporate Architecture: Linux Projects Group
adr:;;1015 Granger Avenue;Ann Arbor;MI;48104;USA
title:Principal Member of Staff
tel;work:+1 248 614 5091
x-mozilla-html:FALSE
version:2.1
end:vcard
[-- Attachment #3: Type: text/plain, Size: 315 bytes --]
-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems? Stop.
Now Search log events and configuration files using AJAX and a browser.
Download your FREE copy of Splunk now >> http://get.splunk.com/
[-- Attachment #4: Type: text/plain, Size: 140 bytes --]
_______________________________________________
NFS maillist - NFS@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/nfs
next prev parent reply other threads:[~2007-07-28 21:02 UTC|newest]
Thread overview: 48+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-07-08 19:16 Status of mount.nfs Steinar H. Gunderson
2007-07-08 23:16 ` Chuck Lever
2007-07-09 3:17 ` Neil Brown
2007-07-09 9:55 ` Steinar H. Gunderson
2007-07-09 16:45 ` Chuck Lever
2007-07-10 0:08 ` Neil Brown
2007-07-15 8:31 ` Steinar H. Gunderson
2007-07-16 1:13 ` Neil Brown
2007-07-16 9:20 ` Steinar H. Gunderson
2007-07-16 10:15 ` Neil Brown
2007-07-22 19:17 ` Steinar H. Gunderson
2007-07-22 21:58 ` Trond Myklebust
2007-07-22 22:04 ` Steinar H. Gunderson
2007-07-24 17:51 ` Trond Myklebust
[not found] ` <46A52816.6050500@oracle.com>
2007-07-24 17:24 ` Steinar H. Gunderson
2007-07-24 17:50 ` Trond Myklebust
2007-07-24 17:55 ` Steinar H. Gunderson
2007-07-24 20:46 ` Chuck Lever
2007-07-24 21:10 ` Trond Myklebust
2007-07-24 21:18 ` Chuck Lever
2007-07-25 2:08 ` rpcbind behavior on Fedora 7 Chuck Lever
2007-07-25 19:35 ` Status of mount.nfs Chuck Lever
2007-07-26 12:47 ` Steve Dickson
2007-07-27 3:02 ` Chuck Lever
2007-07-27 15:00 ` Steve Dickson
2007-07-27 15:56 ` Trond Myklebust
2007-07-27 16:16 ` Steve Dickson
2007-07-27 16:27 ` Trond Myklebust
2007-07-27 17:07 ` Steve Dickson
2007-07-27 17:13 ` Trond Myklebust
2007-07-27 21:38 ` Chuck Lever
2007-07-28 12:51 ` Steve Dickson
2007-07-31 18:30 ` Trond Myklebust
2007-07-31 21:28 ` Chuck Lever
2007-08-01 10:58 ` Steve Dickson
2007-08-01 20:02 ` Chuck Lever
2007-08-01 21:12 ` Steve Dickson
2007-08-02 16:20 ` Chuck Lever
2007-08-02 18:42 ` Trond Myklebust
2007-08-02 21:43 ` Chuck Lever
2007-08-03 13:02 ` Trond Myklebust
2007-08-02 20:46 ` Steve Dickson
2007-07-27 19:37 ` Chuck Lever
2007-07-28 13:20 ` Steve Dickson
2007-07-28 21:00 ` Chuck Lever [this message]
2007-07-29 19:24 ` Steve Dickson
2007-07-30 4:14 ` Chuck Lever
2007-07-24 23:41 ` Steinar H. Gunderson
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=46ABAE5F.1000208@oracle.com \
--to=chuck.lever@oracle.com \
--cc=SteveD@redhat.com \
--cc=nfs@lists.sourceforge.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.