nfs-utils.git
10 years agorpcgen: include sys/ioctl.h on linux systems
Mike Frysinger [Wed, 8 Oct 2008 15:08:55 +0000 (11:08 -0400)]
rpcgen: include sys/ioctl.h on linux systems

The rpcgen tool included with nfs-utils will generate calls to ioctl() but not
actually generate the sys/ioctl.h header include.  Attached patch should fix
this.

Signed-off-by: Mike Frysinger <vapier@gentoo.org>
Signed-off-by: Steve Dickson <steved@redhat.com>
10 years agonfs(5): Clarify behavior of the mountproto= and proto= options
Chuck Lever [Wed, 8 Oct 2008 14:59:53 +0000 (10:59 -0400)]
nfs(5): Clarify behavior of the mountproto= and proto= options

Document the interaction between the mountproto= and the proto= mount
options in a new subsection of nfs(5).

Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Steve Dickson <steved@redhat.com>
10 years agonfs-utils: make makesock() static
Chuck Lever [Wed, 8 Oct 2008 14:45:12 +0000 (10:45 -0400)]
nfs-utils: make makesock() static

Clean up:  The makesock() function can become static since it is only used in
rpcmisc.c, where it is defined.  Fix some minor nits while we're in the area:

 o  Move it so we can remove it's forward declaration.

 o  Get rid of unneeded newlines in the xlog() format strings.

 o  Use htonl(INADDR_ANY) instead of INADDR_ANY to initialize sin_addr.
    Should make no run-time difference, but is slightly more proper,
    as the standard definition of INADDR_ANY is in host byte-order.

 o  Remove the parentheses in the "return" statements.

Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Steve Dickson <steved@redhat.com>
10 years agonfs-utils: Clean up support/nfs/rpcmisc.c:closedown()
Chuck Lever [Wed, 8 Oct 2008 14:42:41 +0000 (10:42 -0400)]
nfs-utils: Clean up support/nfs/rpcmisc.c:closedown()

Clean up: update closedown()'s synopsis to modern C style, and move the
function so we can remove the forward declaration.

Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Steve Dickson <steved@redhat.com>
10 years agoCleaned up the wording in the rpc.nfsd(8) manpage
Steve Dickson [Wed, 1 Oct 2008 18:36:25 +0000 (14:36 -0400)]
Cleaned up the wording in the rpc.nfsd(8) manpage
(BZ: https://bugzilla.linux-nfs.org/show_bug.cgi?id=159)

Signed-off-by: Steve Dickson <steved@redhat.com>
10 years agoCleared up a contradiction in the export(5) man page
Steve Dickson [Wed, 1 Oct 2008 18:30:12 +0000 (14:30 -0400)]
Cleared up a contradiction in the export(5) man page
(BZ: https://bugzilla.linux-nfs.org/show_bug.cgi?id=161)

Signed-off-by: Steve Dickson <steved@redhat.com>
10 years agomountd: change "unknown host" error message to "unmatched host"
Jeff Layton [Mon, 29 Sep 2008 14:20:57 +0000 (10:20 -0400)]
mountd: change "unknown host" error message to "unmatched host"

mount request from unknown host 10.11.14.99 for /export

The hosts are listed in DNS with proper reverse records, so the reason
why the host is "unknown" isn't clear. This patch just changes the
wording of this error to hopefully make it more clear why the mount
request was rejected. This also makes this error message use a format
more similar to the other error messages in auth_authenticate().

Signed-off-by: Jeff Layton <jlayton@redhat.com>
Signed-off-by: Steve Dickson <steved@redhat.com>
10 years agonfs(5): Replace the term "netid" in mount option descriptions
Chuck Lever [Mon, 29 Sep 2008 11:52:40 +0000 (07:52 -0400)]
nfs(5): Replace the term "netid" in mount option descriptions

TI-RPC introduced the concept of "netid" which is a string that is
mapped to a set of transport capabilities via a netconfig database.
RPC services register a netid and bindaddr with their local rpcbind
daemon to advertise their ability to support particular transports.

Mike Eisler noted that the use of the term "netid" in nfs(5) is not
appropriate, since Linux does not treat the value of the proto= or
mountproto= options as a netid proper, but rather to select a
particular transport capability provided locally on the client.

The Linux NFS client currently uses a simple internal mapping between
these names and its own transport capabilities rather than using the
names as part of an rpcbind query, thus these strings are really not
netids.  They are more akin to what TI-RPC calls "protocol names".

Remove the term "netid" from nfs(5) for now.

Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Cc: Mike Eisler <mike.eisler@netapp.com>
Signed-off-by: Steve Dickson <steved@redhat.com>
10 years agonfs(5): Replace the term "netid" in mount option descriptions
Chuck Lever [Mon, 29 Sep 2008 11:34:59 +0000 (07:34 -0400)]
nfs(5): Replace the term "netid" in mount  option descriptions

Mike Eisler noted that the use of the term "netid" in the descriptions
of the "proto=" option is not appropriate, since Linux does not allow
"udp6" or "tcp6".

Replaced the term "netid" with "transport" in nfs(5).

Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Tom Talpey <Thomas.Talpey@netapp.com>
Signed-off-by: Steve Dickson <steved@redhat.com>
10 years agorpc.statd: Stop overloading sockfd in utils/statd/rmtcall.c
Chuck Lever [Fri, 26 Sep 2008 20:16:09 +0000 (16:16 -0400)]
rpc.statd: Stop overloading sockfd in utils/statd/rmtcall.c

The Linux kernel's lockd requires that rpc.statd perform notification
callbacks from a privileged source port.  To guarantee rpc.statd gets a
privileged source port but runs unprivileged, it calls
statd_get_socket() then drops root privileges before starting it's svc
request processing loop.

Statd's svc request loop is the only caller of the process_foo()
functions in utils/statd/rmtcall.c, but one of them,
process_notify_list() attempts to invoke statd_get_socket() again.

In today's code, this is unneeded because statd_get_socket() is always
invoked before my_svc_run().  However, if it ever succeeded, it would
get an unprivileged source port anyway, causing the kernel to reject
all subsequent requests from statd.

Thus the process_notify_list() function should not ever call
statd_get_socket() because root privileges have been dropped by this
point, and statd_get_socket() wouldn't get a privileged source port,
causing the kernel to reject all subsequent SM_NOTIFY requests.

So all of the process_foo functions in utils/statd/rmtcall.c should use
the global sockfd instead of a local copy, as it already has a
privileged source port.

I've seen some unexplained behavior where statd starts making calls to
the kernel via an unprivileged port.  This could be one way that might
occur.

Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Steve Dickson <steved@redhat.com>
10 years agorpc.statd: Use __func__ in dprintf
Chuck Lever [Fri, 26 Sep 2008 20:14:49 +0000 (16:14 -0400)]
rpc.statd: Use __func__ in dprintf

Clean up: The named function in many of the debugging messages in
utils/statd/rmtcall.c is out of date.  To prevent this from happening
in the future, replace these with __func__.

Also, note() and dprintf() do not require a terminating '\n' in their
format string.  So make all invocations consistent.

Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Steve Dickson <steved@redhat.com>
10 years agorpc.statd: Clean up: replace "if (!(foo = rtnl))".
Chuck Lever [Fri, 26 Sep 2008 20:13:45 +0000 (16:13 -0400)]
rpc.statd: Clean up: replace "if (!(foo = rtnl))".

Static code checkers flag this kind of thing because it's easy to
confuse with "if (!(foo == rtnl))".  In one of these cases, the
combination of evaluation and assignment isn't even necessary.

While we are in the neighborhood, remove an extra argument to note() that is
not called for in the passed-in format string.

Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Steve Dickson <steved@redhat.com>
10 years agonfs-utils: whitespace clean ups in support/nfs/rpcmisc.c
Chuck Lever [Fri, 26 Sep 2008 20:12:49 +0000 (16:12 -0400)]
nfs-utils: whitespace clean ups in support/nfs/rpcmisc.c

Clean up: fix a few spurious white space issues in support/nfs/rpcmisc.c.

Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Steve Dickson <steved@redhat.com>
10 years agonfs-utils: Remove excess log reporting
Chuck Lever [Fri, 26 Sep 2008 20:11:57 +0000 (16:11 -0400)]
nfs-utils: Remove excess log reporting

Clean up: The makesock() function already reports an error if it can't
create a socket.  Remove the redundant error check and logging done in
rpc_init() after a makesock() call.

Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Steve Dickson <steved@redhat.com>
10 years agonfs-utils: make makesock() static
Chuck Lever [Fri, 26 Sep 2008 20:10:48 +0000 (16:10 -0400)]
nfs-utils: make makesock() static

Clean up:  The makesock() function can become static since it is only used in
rpcmisc.c, where it is defined.  Fix some minor nits while we're in the area:

 o  Move it so we can remove it's forward declaration.

 o  Get rid of unneeded newlines in the xlog() format strings.

 o  Use htonl(INADDR_ANY) instead of INADDR_ANY to initialize sin_addr.
    Should make no run-time difference, but is slightly more proper,
    as the standard definition of INADDR_ANY is in host byte-order.

 o  Remove the parentheses in the "return" statements.

Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Steve Dickson <steved@redhat.com>
10 years agoshowmount: destroy RPC client when finished
Chuck Lever [Fri, 26 Sep 2008 20:03:27 +0000 (16:03 -0400)]
showmount: destroy RPC client when finished

Clean up: call clnt_destroy() in the showmount command as needed to
destroy the RPC client properly (and close the associated socket) before
the program exits.

Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Steve Dickson <steved@redhat.com>
10 years agonfs-utils: remove disabled code from support/nfs/rpcmisc.c
Chuck Lever [Fri, 26 Sep 2008 17:28:10 +0000 (13:28 -0400)]
nfs-utils: remove disabled code from support/nfs/rpcmisc.c

After some recent discussions, we want to rely on the kernel's network
layer to autotune socket buffers.  Since this code is already disabled in
support/nfs/rpcmisc.c (and has been for some time), let's just remove it.

Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Steve Dickson <steved@redhat.com>
10 years agonfs-utils: Remove unused function rpc_svcrun()
Chuck Lever [Fri, 26 Sep 2008 17:27:23 +0000 (13:27 -0400)]
nfs-utils: Remove unused function rpc_svcrun()

Clean up: remove function that has been disabled (via #if 0) for almost a
decade.

Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Steve Dickson <steved@redhat.com>
10 years agonfs-utils: remove unused function rpc_logcall()
Chuck Lever [Fri, 26 Sep 2008 17:26:23 +0000 (13:26 -0400)]
nfs-utils: remove unused function rpc_logcall()

Clean up: Eliminate rpc_logcall(), which has no callers.

Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Steve Dickson <steved@redhat.com>
10 years agosm-notify command: use static function definitions
Chuck Lever [Fri, 26 Sep 2008 17:25:19 +0000 (13:25 -0400)]
sm-notify command: use static function definitions

Clean up.

The sm-notify command is built from a single source file.
Some of its internal functions are appropriately defined as static.

However, some are declared static, but defined as global.  Some are
declared and defined as global.  None of them are used outside of
utils/statd/sm-notify.c.

Make all the internal functions in utils/statd/sm-notify.cstatic.

Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Steve Dickson <steved@redhat.com>
10 years agosm-notify command: replace nsm_address typedef
Chuck Lever [Fri, 26 Sep 2008 17:24:24 +0000 (13:24 -0400)]
sm-notify command: replace nsm_address typedef

Clean up: replace "typedef struct sockaddr_storage nsm_address" with
standard socket address types.  This makes sm-notify.c consistent with other
parts of nfs-utils, and with typical network application coding conventions.

Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Steve Dickson <steved@redhat.com>
10 years agosm-notify command: clean up error logging
Chuck Lever [Fri, 26 Sep 2008 17:23:18 +0000 (13:23 -0400)]
sm-notify command: clean up error logging

Clean up a few issues with logging in sm-notify.c.

Sometimes in sm-notify, when a system call fails the problem is reported
to stderr but not logged, and then usually sm-notify exits.  In cases like
this, there are probably more hosts to notify, but sm-notify dies silently.

Make sure these errors are logged, and that the log messages explain the
nature of the problem.

Also, if sm-notify exits prematurely, make sure this is always reported at
the LOG_ERR level, not at the LOG_WARNING level.

Remove a couple of unnecessary '\n' in the arguments of nsm_log() calls --
nsm_log() already appends an '\n' to the message.

Finally, use exit() consistently in main().

Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Steve Dickson <steved@redhat.com>
10 years agosm-notify command: getaddrinfo(3) addrinfo leak
Chuck Lever [Fri, 26 Sep 2008 17:21:43 +0000 (13:21 -0400)]
sm-notify command: getaddrinfo(3) addrinfo leak

Make sure the results of getaddrinfo(3) are properly freed in notify().

Note this is a one-time addrinfo allocation that would be automatically
freed when sm-notify exits anyway, so this is more of a nit than a real
bug fix.

Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Steve Dickson <steved@redhat.com>
10 years agosm-notify command: include <config.h>
Chuck Lever [Fri, 26 Sep 2008 17:20:49 +0000 (13:20 -0400)]
sm-notify command: include <config.h>

Clean up: Include config.h as other source files do; instead of using
"config.h" use the HAVE_CONFIG_H macro and include <config.h>.

Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Steve Dickson <steved@redhat.com>
10 years agoshowmount command: clean up error returns from connect_nb()
Chuck Lever [Fri, 26 Sep 2008 17:18:11 +0000 (13:18 -0400)]
showmount command: clean up error returns from connect_nb()

Clean up connect_nb() in the showmount command.

Sometimes it returns -1 on error, and sometimes a negative errno.  On error,
it should always return one of these or the other, not both.

Similar functions in other parts of nfs-utils return -1 on error, and set
errno; so let's do that here too.

Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Steve Dickson <steved@redhat.com>
10 years agorpc.statd: eliminate --secure_statd
Chuck Lever [Fri, 26 Sep 2008 16:42:45 +0000 (12:42 -0400)]
rpc.statd: eliminate --secure_statd

Clean up: Remove RESTRICTED_STATD to help make IPv6 changes simpler.
We keep the code behind RESTRICTED_STATD, and toss anything that is
compiled out when it is set.

RESTRICTED_STATD was added almost 10 years ago in response to CERT
CERT CA-99.05, which addresses exposures in rpc.statd that might allow
an attacker to take advantage of buffer overflows in rpc.statd while it
is running in privileged mode.

These days, I can't think of a reason why anyone would want to run
rpc.statd without setting RESTRICTED_STATD.  In addition, I don't
think rpc.statd is ever tested without it.

Removing RESTRICTED_STATD will get rid of some address storage and
comparison issues that will make IPv6 support simpler.  Plus it will
make our test matrix smaller!

Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Acked-by: Neil Brown <neilb@suse.de>
Signed-off-by: Steve Dickson <steved@redhat.com>
10 years agorpc.tatd: refactor check to see if call is from loopback address
Chuck Lever [Fri, 26 Sep 2008 16:39:13 +0000 (12:39 -0400)]
rpc.tatd: refactor check to see if call is from loopback address

Refactor common logic to check if SM_FOO request is from loopback
address.

We'll have to do something about this for IPv6.  On IPv6-capable
systems, there will be only one AF_INET6 listener.  The loopback caller
will get either an IPv6 loopback address, or a mapped IPv4 loopback --
either way this will be an AF_INET6 address.

Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Acked-by: Neil Brown <neilb@suse.de>
Signed-off-by: Steve Dickson <steved@redhat.com>
11 years agomount: enable retry for nfs23 to set the correct protocol for mount.
Neil Brown [Thu, 28 Aug 2008 15:32:33 +0000 (11:32 -0400)]
mount: enable retry for nfs23 to set the correct protocol for mount.

Use a connected port when talking to portmap via UDP.

This allows us to get ICMP errors reported back so we can avoid
timeouts.  Also catch the error (RPC_CANTRECV) properly in getport.

Signed-off-by: NeilBrown <neilb@suse.de>
Signed-off-by: Steve Dickson <steved@redhat.com>
11 years agoRemove idmapd.conf
J. Bruce Fields [Thu, 28 Aug 2008 15:25:29 +0000 (11:25 -0400)]
Remove idmapd.conf

The example idmapd.conf file is kept in libnfsidmap now, which is what's
responsible for parsing it anyway.

Signed-off-by: J. Bruce Fields <bfields@citi.umich.edu>
Signed-off-by: Steve Dickson <steved@redhat.com>
11 years agoDetermine supported pseudoflavors from export
J. Bruce Fields [Thu, 28 Aug 2008 15:23:05 +0000 (11:23 -0400)]
Determine supported pseudoflavors from export

Instead of using a static list of supported flavors, we should be taking
the list from the export.

Signed-off-by: J. Bruce Fields <bfields@citi.umich.edu>
Signed-off-by: Steve Dickson <steved@redhat.com>
11 years agoMinor mountd.c cleanup
J. Bruce Fields [Thu, 28 Aug 2008 15:20:58 +0000 (11:20 -0400)]
Minor mountd.c cleanup

I find it more readable to have the normal (non-error) case unindented,
and to keep conditionals relatively simple, as is the usual kernel
style.  Fix some inconsistent indentation while we're there.

Signed-off-by: J. Bruce Fields <bfields@citi.umich.edu>
Signed-off-by: Steve Dickson <steved@redhat.com>
11 years agoRemove redundant m_path field
J. Bruce Fields [Thu, 28 Aug 2008 15:17:34 +0000 (11:17 -0400)]
Remove redundant m_path field

Contrary to the comment above its definition, the field m_path always
has the same value as e_path: the *only* modifications of m_path are all
of the form:

strncpy(exp->m_export.m_path, exp->m_export.e_path,
sizeof (exp->m_export.m_path) - 1);
exp->m_export.m_path[sizeof (exp->m_export.m_path) - 1] = '\0';

So m_path is always just a copy of e_path.  In places where we need to
store a path to a submount of a CROSSMNT-exported filesystem, as in
cache.c, we just use a local variable.

Signed-off-by: J. Bruce Fields <bfields@citi.umich.edu>
Signed-off-by: Steve Dickson <steved@redhat.com>
11 years agoStop exportfs warning about needing fsid, when we actually have one
David Woodhouse [Thu, 28 Aug 2008 15:07:53 +0000 (11:07 -0400)]
Stop exportfs warning about needing fsid, when we actually have one

Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
Signed-off-by: Steve Dickson <steved@redhat.com>
11 years agoUse fsid from statfs for UUID if blkid can't cope (or not used)
David Woodhouse [Thu, 28 Aug 2008 15:05:17 +0000 (11:05 -0400)]
Use fsid from statfs for UUID if blkid can't cope (or not used)

Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
Signed-off-by: Steve Dickson <steved@redhat.com>
11 years agoExplicit UUID handling doesn't require blkid; factor out get_uuid_blkdev()
David Woodhouse [Thu, 28 Aug 2008 14:56:57 +0000 (10:56 -0400)]
Explicit UUID handling doesn't require blkid; factor out get_uuid_blkdev()

Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
Signed-off-by: Steve Dickson <steved@redhat.com>
11 years agoFix handling of explicit uuid
David Woodhouse [Thu, 28 Aug 2008 14:29:54 +0000 (10:29 -0400)]
Fix handling of explicit uuid

Fix a couple of bugs which show up if you try to explicitly set a
16-byte UUID when exporting a file system. First, exportfs cuts the
first two bytes off the UUID and writes something invalid to etab.
Second, mountd writes the _ascii_ form of the UUID to the kernel,
instead of converting it to hex.

Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
Signed-off-by: Steve Dickson <steved@redhat.com>
11 years agomount issue with Mac OSX and --manage-gids, client hangs
Neil Brown [Wed, 27 Aug 2008 20:30:19 +0000 (16:30 -0400)]
mount issue with Mac OSX and --manage-gids, client hangs

Make sure are zero len group list is sent down to the
kernel when the gids do not exist on the server.

Tested-by: Alex Samad <alex@samad.com.au>
Signed-off-by: Neil Brown <neilb@suse.de>
Signed-off-by: Steve Dickson <steved@redhat.com>
11 years agomount.nfs command: old glibc missing some flags
Chuck Lever [Thu, 31 Jul 2008 09:24:18 +0000 (05:24 -0400)]
mount.nfs command: old glibc missing some flags

Old versions of glibc (< 2.4) have a getaddrinfo(3) implementation, but
do not include public definitions of the AI_V4MAPPED, AI_ALL, and
AI_ADDRCONFIG flags because it was believed that these flags were not
standardized.  However, these flags have standard definitions both in
POSIX 1003 and in RFCs, and were thus included in later releases of
glibc.

To allow the mount.nfs command to build on systems with these older
versions of glibc, add conditional definitions for these flags in
utils/mount/network.c.

Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Steve Dickson <steved@redhat.com>
11 years agoRelease 1.1.3 nfs-utils-1-1-3
Steve Dickson [Sun, 27 Jul 2008 21:01:45 +0000 (17:01 -0400)]
Release 1.1.3

Signed-off-by: Steve Dickson <steved@redhat.com>
11 years agoshowmount issues
Martin Leisner [Fri, 25 Jul 2008 18:50:06 +0000 (14:50 -0400)]
showmount issues

The connect_nb() routne returns zero for success and a negative
value for failure which was not being interpreted correctly
by the getport() routine. This patch fixes that problem.

Signed-off-by: Steve Dickson <steved@redhat.com>
11 years agonfs(5) man page: Add documentation for the "mountproto=" option
Chuck Lever [Fri, 25 Jul 2008 18:31:18 +0000 (14:31 -0400)]
nfs(5) man page: Add documentation for the "mountproto=" option

Looks like mountproto= was never documented in nfs(5).  Add a paragraph
that describes it in the "nfs mount options" section.

Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Steve Dickson <steved@redhat.com>
11 years agosm-notify: perform DNS lookup in the background.
Steve Dickson [Fri, 25 Jul 2008 18:15:47 +0000 (14:15 -0400)]
sm-notify: perform DNS lookup in the background.

If an NFS server has no network connectivity when it reboots,
it will block in sm-notify waiting for DNS lookup for a potentially
large number of hosts.  This is not helpful and just annoys the
sysadmin.

So do the DNS lookup in the backgrounded phase of sm-notify,
before sending off the NOTIFY requests.

Acked-by: NeilBrown <neilb@suse.de>
Signed-off-by: Steve Dickson <steved@redhat.com>
11 years agoIf portmap is not listening on UDP (as apparently happens with
Neil Brown [Wed, 16 Jul 2008 17:28:52 +0000 (13:28 -0400)]
If portmap is not listening on UDP (as apparently happens with
MS-Windows-Server2003R2SP2), then nfs mounts have to be mounted
with -o mountproto=tcp to succeed.

In this case a umount will still try UDP and will fail to contact the
server.  It will still succeed with the local unmount (after a
timeout) but exits with a non-zero exit status.  This causes
/bin/mount to retry so we get a strange error about the filesystem
not being mounted.

So:
  get umount to use tcp if "mountproto=tcp" appears in mtab
  ignore any failure message from the server that would overwrite
     a success message from the local umount syscall.

Signed-off-by: NeilBrown <neilb@suse.de>
Signed-off-by: Steve Dickson <steved@redhat.com>
11 years agoIf an NFS server is only listening on TCP for portmap (as apparently
Neil Brown [Wed, 16 Jul 2008 17:15:46 +0000 (13:15 -0400)]
If an NFS server is only listening on TCP for portmap (as apparently
MS-Windows-Server2003R2SP2 does), mount doesn't cope.  There is retry
logic in case the initial choice of version/etc doesn't work, but it
doesn't cope with mountd needing tcp.
So:
  Fix probe_port so that a TIMEDOUT error doesn't simply abort
    but probes with other protocols (e.g. tcp).
  Fix rewrite_mount_options to extract the mountproto option before
    doing a probe, then set mountproto  (and mount prot) based
    on the result.

Signed-off-by: Neil Brown <neilb@suse.de>
Signed-off-by: Steve Dickson <steved@redhat.com>
11 years agoIt appears that a recent glibc update now enforces the requirement for a mode
Steve Dickson [Tue, 15 Jul 2008 18:43:00 +0000 (14:43 -0400)]
It appears that a recent glibc update now enforces the requirement for a mode
parameter for open calls with the O_CREAT flag set.  nfs-utils support code
defines a function xflock used by exportfs and mountd that calls open with
O_CREAT but no mode parameter.  This causes exportfs and mountd to dump core,
with the error message:
*** invalid open64 call: O_CREAT without mode ***:rpc.mountd terminated

Signed-off-by: Steve Dickson <steved@redhat.com>
11 years agoClean up: Include the bare minimum of legacy RPC headers in
Chuck Lever [Tue, 15 Jul 2008 17:59:00 +0000 (13:59 -0400)]
Clean up: Include the bare minimum of legacy RPC headers in
utils/mount/network.h.

Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Steve Dickson <steved@redhat.com>
11 years agoClean up: remove unneeded headers from utils/mount/stropts.c.
Chuck Lever [Tue, 15 Jul 2008 17:57:10 +0000 (13:57 -0400)]
Clean up: remove unneeded headers from utils/mount/stropts.c.

Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Steve Dickson <steved@redhat.com>
11 years agoClean up: rename a couple of functions in utils/mount/stropts.c to match
Chuck Lever [Tue, 15 Jul 2008 17:55:36 +0000 (13:55 -0400)]
Clean up: rename a couple of functions in utils/mount/stropts.c to match
the naming convention of the others.

Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Steve Dickson <steved@redhat.com>
11 years agoClean up: remove unused IPv4-only functions used by the text-based mount
Chuck Lever [Tue, 15 Jul 2008 17:53:50 +0000 (13:53 -0400)]
Clean up: remove unused IPv4-only functions used by the text-based mount
command.

Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Steve Dickson <steved@redhat.com>
11 years agoTraditionally the mount command has looked for a ":" to separate the
Chuck Lever [Tue, 15 Jul 2008 17:51:07 +0000 (13:51 -0400)]
Traditionally the mount command has looked for a ":" to separate the
server's hostname from the export path in the mounted on device name,
like this:

 mount server:/export /mounted/on/dir

The server's hostname is "server" and the export path is "/export".

You can also substitute a specific IPv4 network address for the server
hostname, like this:

 mount 192.168.0.55:/export /mounted/on/dir

Raw IPv6 addresses present a problem, however, because they look something
like this:

 fe80::200:5aff:fe00:30b

Note the use of colons.

To get around the presence of colons, copy the Solaris convention used for
raw NFS server IPv6 addresses, which is to wrap the raw IPv6 address with
square brackets.  This is also suggested in RFC 4038.

Introduce a new device name parser that can support traditional device
names and square brackets.  Place the parser in a separate source file
so both the mount and umount paths can derive the server's hostname and
export pathname the same way.

Bonus points: add a check for NFS URLs and display an appropriate error
message in that case.  This is cleaner than failing with "unknown host:
nfs".

Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Steve Dickson <steved@redhat.com>
11 years agoChange the fix_mounthost_option() function to support resolving IPv6
Chuck Lever [Tue, 15 Jul 2008 17:38:53 +0000 (13:38 -0400)]
Change the fix_mounthost_option() function to support resolving IPv6
addresses.

Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Steve Dickson <steved@redhat.com>
11 years agoChange the append_clientaddr_option() function to support sending either
Chuck Lever [Tue, 15 Jul 2008 17:37:07 +0000 (13:37 -0400)]
Change the append_clientaddr_option() function to support sending either
IPv4 or IPv6 addresses to the kernel via the "clientaddr=" option.

If the mount.nfs4 command can't determine an appropriate callback address,
it used to fail the mount request.  This new function simply sends an ANY
address instead, so the mount request succeeds, but delegation is disabled.

Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Steve Dickson <steved@redhat.com>
11 years agoChange the append_addr_option() function to support sending either IPv4
Chuck Lever [Tue, 15 Jul 2008 17:34:49 +0000 (13:34 -0400)]
Change the append_addr_option() function to support sending either IPv4
or IPv6 addresses to the kernel via the "addr=" option.

Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Steve Dickson <steved@redhat.com>
11 years agoThere are three helpers that convert sockaddr-style addresses to text
Chuck Lever [Tue, 15 Jul 2008 17:33:32 +0000 (13:33 -0400)]
There are three helpers that convert sockaddr-style addresses to text
addresses, then construct mount options to pass these addresses to the
kernel.  The tail of each of these helpers does exactly the same thing,
so introduce a helper that handles the common code.

Magically, the new helper supports IPv6 as well as IPv4.

Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Steve Dickson <steved@redhat.com>
11 years agoIntroduce IPv6-enabled version of get_client_address. The legacy mount
Chuck Lever [Tue, 15 Jul 2008 17:31:17 +0000 (13:31 -0400)]
Introduce IPv6-enabled version of get_client_address.  The legacy mount
command could use this eventually as well.

If this new function fails to discover an appropriate callback address, it
fills in an ANY address to indicate to the server that it should not call the
client back (ie delegations are disabled in this case).

The user can specify a callback address via the clientaddr= mount option in
this case to enable delegation.

Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Steve Dickson <steved@redhat.com>
11 years agoIntroduce two new functions to convert a sockaddr to a presentation format
Chuck Lever [Tue, 15 Jul 2008 17:27:15 +0000 (13:27 -0400)]
Introduce two new functions to convert a sockaddr to a presentation format
string and back.

Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Steve Dickson <steved@redhat.com>
11 years agoAdd #include directives for additional header files needed to support IPv6
Chuck Lever [Tue, 15 Jul 2008 17:23:58 +0000 (13:23 -0400)]
Add #include directives for additional header files needed to support IPv6
networking.  This is a separate patch so subsequent
patches can be reordered without collision.

Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Steve Dickson <steved@redhat.com>
11 years agoWe want to continue to support building nfs-utils on systems that do not
Chuck Lever [Tue, 15 Jul 2008 17:20:01 +0000 (13:20 -0400)]
We want to continue to support building nfs-utils on systems that do not
have IPv6-enabled RPC libraries and headers installed, so add a
./configure switch that allows distros to disable IPv6 functionality.

This patch introduces the nfs-utils autotools configuration to the library
and header dependencies that will be required in subsequent patches.
Later patches can then be reordered more easily if these new dependencies
are added in one heap.

For now, --enable-ipv6 defaults to "no", so this patch should not result in
any behavioral changes to the nfs-utils build process, by default.

Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Steve Dickson <steved@redhat.com>
11 years agoCurrently the "-s" option is ignored by the text-based mount interface. To
Chuck Lever [Tue, 15 Jul 2008 16:17:19 +0000 (12:17 -0400)]
Currently the "-s" option is ignored by the text-based mount interface.  To
notify the kernel that sloppy mount option parsing is needed, add "sloppy"
to the string of mount options passed to the kernel.

The 2.6.23 - 2.6.26 kernels will fail the mount if "sloppy" is present, as
they won't recognize it.  To prevent them from ever seeing this option,
have the mount command check the kernel version before appending the option.

Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Steve Dickson <steved@redhat.com>
11 years agoLots of parts of nfs-utils already depend on getaddrinfo(3).
Chuck Lever [Tue, 15 Jul 2008 16:15:29 +0000 (12:15 -0400)]
Lots of parts of nfs-utils already depend on getaddrinfo(3).

We could find each instance where getaddrinfo(3) is invoked, wrap it with
'#ifdef HAVE_GETADDRINFO', and provide equivalent logic without it, but that's
a whole lot of work... and no-one has complained about this so far.

So as a clean-up, let's simply add a hard dependency for it in configure.ac,
and call it a day.

Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Steve Dickson <steved@redhat.com>
11 years agoClean up: add the traditional pre-processor safety check in headers under
Chuck Lever [Tue, 15 Jul 2008 16:13:10 +0000 (12:13 -0400)]
Clean up: add the traditional pre-processor safety check in headers under
utils/mount to prevent them from being included multiple times.

For headers that already have this, use a more unique macro name to reduce the
probability that some other header may use the same macro.

Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Steve Dickson <steved@redhat.com>
11 years agoMoved the kernel version-ing code into a new version.h
Chuck Lever [Tue, 15 Jul 2008 16:10:33 +0000 (12:10 -0400)]
Moved the kernel version-ing code into a new version.h
header file which allows the code to be shared

Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Steve Dickson <steved@redhat.com>
11 years agoIntroduce a new DNS resolver function in utils/mount/network.c that uses
Chuck Lever [Tue, 15 Jul 2008 16:02:42 +0000 (12:02 -0400)]
Introduce a new DNS resolver function in utils/mount/network.c that uses
getaddrinfo(3), which supports AF_INET6, to resolve host names.

Replace the guts of nfs_gethostbyname() with a call to the new function.

Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Steve Dickson <steved@redhat.com>
11 years agoThe text-based mount command displays the rather inexplicable "mount:
Chuck Lever [Tue, 15 Jul 2008 15:59:03 +0000 (11:59 -0400)]
The text-based mount command displays the rather inexplicable "mount:
internal error" whenever it encounters a problem that is entirely
unexpected by its designers.

Let's beef that error message up to include instructions about reporting
the problem, and fix the error code returned by the mount option rewriting
logic so that also will no longer report "internal error".  An error in there
should generally only occur if there was an invalid mount option specified.

Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Steve Dickson <steved@redhat.com>
11 years agoUpdated both the mountstats and nfs-iostat scripts to used the
Chuck Lever [Tue, 15 Jul 2008 15:56:13 +0000 (11:56 -0400)]
Updated both the mountstats and nfs-iostat scripts to used the
proper abbreviation for kilobytes per second (kB/s).

Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Steve Dickson <steved@redhat.com>
11 years agoPorted the create_mtab() routine from util-linux-ng as well
Christiaan Welvaart [Tue, 15 Jul 2008 15:42:42 +0000 (11:42 -0400)]
Ported the create_mtab() routine from util-linux-ng as well
some add_mtab() updates to better hand the instances where
/etc/mtab does not exist or is not writable

Signed-off-by: Christiaan Welvaart <cjw@daneel.dyndns.org>
Signed-off-by: Steve Dickson <steved@redhat.com>
11 years agoThe rpc.gssd scans for any suitable kerberos ticket. In cross-realm
Lukas Hejtmanek [Tue, 15 Jul 2008 14:12:39 +0000 (10:12 -0400)]
The rpc.gssd scans for any suitable kerberos ticket. In cross-realm
environment this may not be the desired behaviour. Therefore a new
option, -R preferred realm, is presented so that the rpc.gssd prefers tickets
from this realm. By default, the default realm is preferred.

Signed-off-by: Lukas Hejtmanek <xhejtman@ics.muni.cz>
Signed-off-by: Kevin Coffman <kwc@citi.umich.edu>
Signed-off-by: Steve Dickson <steved@redhat.com>
11 years agoThe default expiration of kernel gss contexts is the expiration
Lukas Hejtmanek [Tue, 15 Jul 2008 14:07:45 +0000 (10:07 -0400)]
The default expiration of kernel gss contexts is the expiration
of the Kerberos ticket used in its creation.  (For contexts
created using the Kerberos mechanism.)  Thus kdestroy has
no effect in nullifying the kernel context.

This patch adds -t <timeout> option to rpc.gssd so that the client's
administrator may specify a timeout for expiration of contexts in kernel.
After this timeout, rpc.gssd is consulted to create a new context.

By default, timeout is 0 (i.e., no timeout at all) which follows the
previous behavior.

Signed-off-by: Lukas Hejtmanek <xhejtman@ics.muni.cz>
Signed-off-by: Kevin Coffman <kwc@citi.umich.edu>
Signed-off-by: Steve Dickson <steved@redhat.com>
11 years agogssd_setup_krb5_user_gss_ccache must return an error if no usable cache is
Lukas Hejtmanek [Tue, 15 Jul 2008 14:02:49 +0000 (10:02 -0400)]
gssd_setup_krb5_user_gss_ccache must return an error if no usable cache is
found. Trying to use invalid default cache and continue is not good idea at all.

Signed-off-by: Lukas Hejtmanek <xhejtman@ics.muni.cz>
Signed-off-by: Kevin Coffman <kwc@citi.umich.edu>
Signed-off-by: Steve Dickson <steved@redhat.com>
11 years agoWhen a FQDN exists in /var/lib/nfs/rmtab it causes
Steve Dickson [Wed, 25 Jun 2008 13:23:45 +0000 (09:23 -0400)]
When a FQDN exists in /var/lib/nfs/rmtab it causes
the exportfs command to seg fault due to the nfs_export pointer
not being allocated. Reworking the parentheses in rmtab_read()
so the htype variable is evaluated correctly fix the problem.

Signed-off-by: Steve Dickson <steved@redhat.com>
11 years agoAdd RDMA as a supported transport for reporting
Tom Talpey [Mon, 23 Jun 2008 16:57:29 +0000 (12:57 -0400)]
Add RDMA as a supported transport for reporting
the mountstats statistics

Signed-off-by: Tom Talpey <tmt@netapp.com>
Acked-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Steve Dickson <steved@redhat.com>
11 years agoThe "nfs-iostat" utility is a Python program that extracts and displays NFS
Chuck Lever [Mon, 23 Jun 2008 16:56:14 +0000 (12:56 -0400)]
The "nfs-iostat" utility is a Python program that extracts and displays NFS
client performance information from /proc/self/mountstats.

Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Steve Dickson <steved@redhat.com>
11 years agoAdd RDMA as a supported transport for reporting the
Tom Talpey [Mon, 23 Jun 2008 16:54:08 +0000 (12:54 -0400)]
Add RDMA as a supported transport for reporting the
mountstats statistics

Signed-off-by: Tom Talpey <tmt@netapp.com>
Acked-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Steve Dickson <steved@redhat.com>
11 years agoThe "mountstats" utility is a Python program that extracts and displays NFS
Chuck Lever [Mon, 23 Jun 2008 16:52:33 +0000 (12:52 -0400)]
The "mountstats" utility is a Python program that extracts and displays NFS
client performance information from /proc/self/mountstats.

Note that if mountstats is named 'ms-nfsstat' or 'ms-iostat' it offers
slightly different functionality.  It needs two man pages and the install
script should provide both commands by installing the script and providing the
other command via a symlink.

Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Steve Dickson <steved@redhat.com>
11 years agoThe nfsstat program reads /proc/net/rpc/* files to gets info about
Jeff Layton [Mon, 23 Jun 2008 11:21:52 +0000 (07:21 -0400)]
The nfsstat program reads /proc/net/rpc/* files to gets info about
calls. This info is output as unsigned numbers (at least on any
relatively recent kernel). When nfsstat prints these numbers, they are
printed as signed integers. When the call counters reach 2^31, things
start being printed as negative numbers.

This patch changes nfsstat to read and print all counters as unsigned
integers. Tested by hacking up a kernel to initialize call counters to
2^31+1.

Thanks to Takafumi Miki for the initial version of this patch.

Signed-off-by: Jeff Layton <jlayton@redhat.com>
Signed-off-by: Steve Dickson <steved@redhat.com>
11 years agoRemoved the initialization of args2 in xlog_backend. It
Steve Dickson [Fri, 6 Jun 2008 21:27:23 +0000 (17:27 -0400)]
Removed the initialization of args2 in xlog_backend. It
caused a compilation error on x86_64 archs.

Signed-off-by: Steve Dickson <steved@redhat.com>
11 years agonfsstat -m lists all current nfs mounts, with the mount options.
Neil Brown [Fri, 6 Jun 2008 19:17:55 +0000 (15:17 -0400)]
nfsstat -m lists all current nfs mounts, with the mount options.
It does this by reading /proc/mounts and looking for mounts of type
"nfs".  It really should check for "nfs4" as well.

For simplicity, just check the first 3 characters of the type.

Signed-off-by: NeilBrown <neilb@suse.de>
Signed-off-by: Steve Dickson <steved@redhat.com>
11 years agoFix error reporting when probe_bothports() fails while rewriting mount
Chuck Lever [Fri, 6 Jun 2008 19:07:24 +0000 (15:07 -0400)]
Fix error reporting when probe_bothports() fails while rewriting mount
options.

Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Steve Dickson <steved@redhat.com>
11 years agoClean up: instead of passing so many arguments to all the helpers, have
Chuck Lever [Fri, 6 Jun 2008 19:06:21 +0000 (15:06 -0400)]
Clean up: instead of passing so many arguments to all the helpers, have
nfsmount_string build a data structure that contains all the arguments, and
pass a pointer to that instead.

Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Steve Dickson <steved@redhat.com>
11 years agoSteinar Gunderson reports:
Chuck Lever [Fri, 6 Jun 2008 19:02:18 +0000 (15:02 -0400)]
Steinar Gunderson reports:

"It seems retry= is now additive with the text-based mount interface. In
particular, "mount -o retry=0" still gives a two-minute timeout."

Correct the bug and make retry= option parsing more robust.  If parsing
the retry option fails, the option is ignored and a default timeout is
used.

Note that currently the kernel parser ignores the "retry=" option if the
value is a number.  If the value contains other characters, the kernel will
choke.  A subsequent patch to the kernel will allow any characters as the
value of the retry option (excepting of course ",").

Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Steve Dickson <steved@redhat.com>
11 years agoMake the text-based mount path check whether statd is running if the "lock"
Neil Brown [Fri, 6 Jun 2008 18:59:21 +0000 (14:59 -0400)]
Make the text-based mount path check whether statd is running if the "lock"
option is in effect.  This echoes similar logic in the legacy mount path.

Signed-off-by: Neil Brown <neilb@suse.de>
Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Steve Dickson <steved@redhat.com>
11 years agoCleaned up warnings in rmtab.c and xlog.c
Steve Dickson [Fri, 6 Jun 2008 18:44:48 +0000 (14:44 -0400)]
Cleaned up warnings in rmtab.c and xlog.c

Signed-off-by: Steve Dickson <steved@redhat.com>
11 years agoFixed smail typo in exportfs man page
Oren Held [Thu, 8 May 2008 09:23:10 +0000 (05:23 -0400)]
Fixed smail typo in exportfs man page

Signed-off-by: Steve Dickson <steved@redhat.com>
11 years agoIf mount.nfs is not installed setuid, an attempt to perform a "user"
NeilBrown [Thu, 8 May 2008 09:18:25 +0000 (05:18 -0400)]
If mount.nfs is not installed setuid, an attempt to perform a "user"
or "users" mount will fail with a fairly obscure error message,
typically about getting "permission denied" from the server.

This patch gives a more helpful message in that case.

Signed-off-by: NeilBrown <neilb@suse.de>
Signed-off-by: Steve Dickson <steved@redhat.com>
11 years agoKerberos credentials may be stored in multiple places. Make it
Vince Busam [Wed, 7 May 2008 19:24:53 +0000 (15:24 -0400)]
Kerberos credentials may be stored in multiple places.  Make it
possible to search several directories for valid credentials when
making NFS requests.

Original patch from Vince Busam <vbusam@google.com>

Signed-off-by: Kevin Coffman <kwc@citi.umich.edu>.
Signed-off-by: Steve Dickson <steved@redhat.com>
11 years agoAdd a new function to retrieve the current verbosity level
Kevin Coffman [Wed, 7 May 2008 18:38:47 +0000 (14:38 -0400)]
Add a new function to retrieve the current verbosity level
so that some messages that would otherwise always print may
be silenced.

Signed-off-by: Kevin Coffman <kwc@citi.umich.edu>
Signed-off-by: Steve Dickson <steved@redhat.com>
11 years agoAdd the other two DES encryption types to the default list of
Kevin Coffman [Wed, 7 May 2008 18:32:45 +0000 (14:32 -0400)]
Add the other two DES encryption types to the default list of
Kerberos encryption types that may be negotiated.

Signed-off-by: Kevin Coffman <kwc@citi.umich.edu>
Signed-off-by: Steve Dickson <steved@redhat.com>
11 years agoCheck the info file nfs/rpc_pipefs/nfs/clnt?/info to
Olga Kornievskaia [Wed, 7 May 2008 14:54:51 +0000 (10:54 -0400)]
Check the info file nfs/rpc_pipefs/nfs/clnt?/info to
see if a port number was supplied. If so, use it rather
than the default port number.

Signed-off-by: Olga Kornievskaia <aglo@citi.umich.edu>
Signed-off-by: Kevin Coffman <kwc@citi.umich.edu>
Signed-off-by: Steve Dickson <steved@redhat.com>
11 years agoThe prev_bg_host stuff made sense when NFS didn't have its own mount
Jeff Layton [Wed, 7 May 2008 14:37:40 +0000 (10:37 -0400)]
The prev_bg_host stuff made sense when NFS didn't have its own mount
handler. Now though, each mount.nfs invocation is really a one-shot
affair, and this check no longer works. It also leaked memory. Remove
it.

Signed-off-by: Jeff Layton <jlayton@redhat.com>
Signed-off-by: Steve Dickson <steved@redhat.com>
11 years agoThe bg option is essentially ignored with nfs4 currently. nfs4mount()
Jeff Layton [Wed, 7 May 2008 14:35:30 +0000 (10:35 -0400)]
The bg option is essentially ignored with nfs4 currently. nfs4mount()
will never exit with EX_BG, so the mount will never be backgrounded.
Fix it so that when bg is specified that we error out with EX_BG as
soon as possible after the first failed mount attempt.

Signed-off-by: Jeff Layton <jlayton@redhat.com>
Signed-off-by: Steve Dickson <steved@redhat.com>
11 years agoCurrently nfs4mount() sets the retry value to 10000 on both fg and bg
Jeff Layton [Wed, 7 May 2008 14:27:53 +0000 (10:27 -0400)]
Currently nfs4mount() sets the retry value to 10000 on both fg and bg
mounts. It should be 2 for fg and 10000 for bg. nfsmount() sets it
properly, but there is a potential corner case. If someone explicitly
sets retry=10000 on a fg mount, then it will be reset to 2.

Fix this by having retry default to -1 for both flavors, and then reset if
needed after the mount options have been parsed.

Signed-off-by: Jeff Layton <jlayton@redhat.com>
Signed-off-by: Steve Dickson <steved@redhat.com>
11 years agoFixed arguments to the hosts_ctl() call in the good_client() routine
Sten Spans [Mon, 5 May 2008 18:04:58 +0000 (14:04 -0400)]
Fixed arguments to the hosts_ctl() call in the good_client() routine
used in the tcpwrapper support.

Signe-off-by: Steve Dickson <steved@redhat.com>
11 years agoChange how mount.nfs handles EACCES errors. Currently,
Jeff Layton [Mon, 14 Apr 2008 13:03:13 +0000 (09:03 -0400)]
Change how mount.nfs handles EACCES errors. Currently,
EACCES is a non-fatal error which means the mount will be
retied. This caused mounts to hang for 2mins when the client
does not have permission to access the export. In a strict
interpretation, the error that should be returned is EPERM, but
this is not always the case. So due to the fuzzy interpretation,
of EPERM and EACCES, EACCESS is now a fatal error

Signed-off-by: Steve Dickson <steved@redhat.com>
11 years agoCorrect a spelling error in a mount.nfs error message
Li Yewang [Wed, 9 Apr 2008 17:39:20 +0000 (13:39 -0400)]
Correct a spelling error in a mount.nfs error message

Signed-off-by: Li Yewang <lyw@cn.fujitsu.com>
Signed-off-by: Steve Dickson <steved@redhat.com>
11 years agoMake sure showmount fails when rpc.mountd is not registered
Steve Dickson [Tue, 18 Mar 2008 13:34:58 +0000 (09:34 -0400)]
Make sure showmount fails when rpc.mountd is not registered

Signed-off-by: Steve Dickson <steved@redhat.com>
11 years agoUpdated exportfs man to talk about /var/lib/nfs/etab
Steve Dickson [Tue, 18 Mar 2008 13:33:44 +0000 (09:33 -0400)]
Updated exportfs man to talk about /var/lib/nfs/etab
instead of /var/lib/nfs/xtab

Signed-off-by: Steve Dickson <steved@redhat.com>
11 years agoThere were 2 things wrong with auth flavour ordering:
bc Wong [Tue, 18 Mar 2008 13:30:44 +0000 (09:30 -0400)]
There were 2 things wrong with auth flavour ordering:
- Mountd used to advertise AUTH_NULL as the first flavour on
  the list, which means that it prefers AUTH_NULL to anything
  else (as per RFC 2623 section 2.7).
- Mount.nfs used to scan the returned list in reverse order,
  and stopping at the first AUTH_NULL or AUTH_SYS encountered.
  If a server advertises (AUTH_SYS, AUTH_NULL), it will by
  default choose AUTH_NULL and have degraded access.

I've fixed mount.nfs to scan from the beginning. For mountd,
it does not advertise AUTH_NULL anymore. This is necessary
to avoid backward compatibility issue. If AUTH_NULL appears
in the list, either the new or the old client will choose
that over AUTH_SYS.

Tested the server/client combination against the previous
versions, as well as Solaris and FreeBSD.

Signed-off-by: bc Wong <bcwong@cisco.com>
Signed-off-by: Steve Dickson <steved@redhat.com>
11 years agoRelease 1.1.2 nfs-utils-1-1-2
Steve Dickson [Fri, 14 Mar 2008 15:46:29 +0000 (11:46 -0400)]
Release 1.1.2

Signed-off-by: Steve Dickson <steved@redhat.com>
11 years agoTurn down gssd's syslog verbosity
Timo Aaltonen [Thu, 13 Mar 2008 17:02:32 +0000 (13:02 -0400)]
Turn down gssd's syslog verbosity

Modified-by: Kevin Coffman <kwc@citi.umich.edu>
Signed-off-by: Steve Dickson <steved@redhat.com>
11 years agoStop rpc.mountd from probing all known devices which causes
Steinar H. Gunderson [Thu, 13 Mar 2008 15:30:18 +0000 (11:30 -0400)]
Stop rpc.mountd from probing all known devices which causes
idle disks to spin up for basically no reason.

Signed-off-by: Steinar H. Gunderson <sgunderson@bigfoot.com>
Signed-off-by: Steve Dickson <steved@redhat.com>