summaryrefslogtreecommitdiffstats
path: root/utils/mount
Commit message (Collapse)AuthorAgeFilesLines
...
* mount: Remove MOUNT_CONFIG warningsSteve Dickson2011-03-052-4/+4
| | | | | | | The following changes are needed to remove compile warnings when MOUNT_CONFIG is not defined Signed-off-by: Steve Dickson <steved@redhat.com>
* mount: Recognize zero as a valid value for the port= optionChuck Lever2011-03-031-2/+2
| | | | | | | | | | While zero is not a valid IP port number, zero does represent a valid value for "port=". It means "query rpcbind to discover the actual non-zero port number to use". So the parsing functions that handle "port=" should not flag zero as an invalid value. Signed-off-by: Chuck Lever <chuck.lever@oracle.com> Signed-off-by: Steve Dickson <steved@redhat.com>
* Removed a couple warnings from utils/mount/stropts.cSteve Dickson2010-11-221-2/+2
| | | | | | | stropts.c:740:6: warning: 'ret' may be used uninitialized in this function stropts.c:653:6: warning: 'ret' may be used uninitialized in this function Signed-off-by: Steve Dickson <steved@redhat.com>
* nfs(5): Document remount behaviorChuck Lever2010-11-011-16/+38
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | It appears that, for a long while, NFS "remount" mounts have completely wiped the existing mount options in /etc/mtab for a given mount point. This is a problem for umount.nfs, since it reads its options out of /etc/mtab to find out how to do the unmount. The mount(8) command provides the NFS mount subcommand with the mount options to perform the remount. There are four cases to consider: 1. Both the device and mount directory are specified on the command line, and the target mount point is in /etc/fstab 2. Only one of the device and mount directory is specified on the command line, and the target mount point is in /etc/fstab 3. Both the device and mount directory are specified on the command line, and the target mount point is not in /etc/fstab 4. Only one of the device and mount directory is specified on the command line, and the target mount point is not in /etc/fstab Currently only case 4 works correctly. In that case, mount(8) provides the correct set of mount options to the mount.nfs subcommand and it can update /etc/mtab correctly. Cases 1 and 3 replace all mount options in /etc/mtab with the options provided on the command line during a remount. Case 2 replaces the mount options in /etc/mtab with a mix of options from /etc/fstab and /etc/mtab. Cases 1 and 3 are historical behavior. Basically this is a formal interface to allow administrators to replace the mount options in /etc/mtab completely, instead of merging in new ones. The present patch documents that behavior in nfs(5), and provides best practice for remounting NFS mount points. There are near-term plans to address case 2 by fixing mount(8) (provided by utils-linux-ng in most distributions). This is a partial fix for: https://bugzilla.linux-nfs.org/show_bug.cgi?id=188 Signed-off-by: Chuck Lever <chuck.lever@oracle.com> Signed-off-by: Steve Dickson <steved@redhat.com>
* nfs(5): Grammar and style fixesChuck Lever2010-11-011-8/+7
| | | | | | | | Clean up grammar and style issues introduced by recent updates. Also, I'm not certain inappropriate options are always ignored. Signed-off-by: Chuck Lever <chuck.lever@oracle.com> Signed-off-by: Steve Dickson <steved@redhat.com>
* mount.nfs: mnt_freq and mnt_pass are always zeroChuck Lever2010-11-011-15/+19
| | | | | | | | | | | Clean up. No need to pass constant zeros to add_mtab() from its only call site. Ensure that initialization of a struct mntent is consistent in both places that it is done. Signed-off-by: Chuck Lever <chuck.lever@oracle.com> Signed-off-by: Steve Dickson <steved@redhat.com>
* mount.nfs: Fix memory leak in nfs_sys_mount()Chuck Lever2010-11-011-3/+5
| | | | | | | | This appears to have been left behind by last year's adjustments to how the extra_opts string is constructed. Signed-off-by: Chuck Lever <chuck.lever@oracle.com> Signed-off-by: Steve Dickson <steved@redhat.com>
* mount: Fix compiler warning in nfs_parse_retry_option()Chuck Lever2010-11-011-2/+5
| | | | | | | | | | | | stropts.c: In function nfs_parse_retry_option: stropts.c:131: warning: conversion to unsigned int from long int may alter its value Make it more clear what the second argument is for, and flag the switch fallthrough case. Signed-off-by: Chuck Lever <chuck.lever@oracle.com> Signed-off-by: Steve Dickson <steved@redhat.com>
* nfs-utils: Remove all uses of AI_ADDRCONFIGChuck Lever2010-11-012-8/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | It was reported that, if only "lo" is up, mount.nfs 127.0.0.1:/export /mount fails with "Name or service not known". "man 3 getaddrinfo" says this: If hints.ai_flags includes the AI_ADDRCONFIG flag, then IPv4 addresses are returned in the list pointed to by res only if the local system has at least one IPv4 address configured, and IPv6 addresses are only returned if the local system has at least one IPv6 address configured. The man page oversimplifies here. A review of glibc shows that getaddrinfo(3) explicitly ignores loopback addresses when deciding whether an IPv4 or IPv6 address is configured. This behavior around loopback is a problem not just for mount.nfs, but also for RPC daemons that have to start up before a system's networking is fully configured and started. Given the history of other problems with AI_ADDRCONFIG and the unpredictable behavior it introduces, let's just remove it everywhere in nfs-utils. This fix addresses: https://bugzilla.linux-nfs.org/show_bug.cgi?id=191 Signed-off-by: Chuck Lever <chuck.lever@oracle.com> Signed-off-by: Steve Dickson <steved@redhat.com>
* behavior as file systems that use the monolithic /sbin/mount command.Chuck Lever2010-10-142-2/+6
| | | | | | | | | | | | | | | | | See the MS_NOMTAB macro in utils-linux-ng/mount/mount.c. Note that mount(8) has MS_USERS and MS_USER in the "nomtab" category as well, but mount.nfs needs to record those values so that unmounting a user-mounted NFS file system can work. While we're here, fix some white space damage in fix_opts_string(). This is a partial fix for: https://bugzilla.linux-nfs.org/show_bug.cgi?id=188 Signed-off-by: Chuck Lever <chuck.lever@oracle.com> Signed-off-by: Steve Dickson <steved@redhat.com>
* umount.nfs: Distinguish between nfs4 and nfs mountsChuck Lever2010-10-141-7/+104
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Neil Brown reports that umount.nfs is still confused by "-t nfs -o vers=4" mounts. /etc/mtab can be confused. /proc/mounts is authoritative on the fstype of a mount. Have umount.nfs consult it to determine which mechanism to use for unmounting. The code to read /proc/mounts was lifted from the nfsstat command. The code introduced by this patch may look like belt-n-suspenders, but we have two use cases to consider: 1. Old kernels don't support the "vers=4" mount option, so umount.nfs must look for the "nfs4" fstype 2. Upcoming kernels may eliminate support the "nfs4" fstype, so umount.nfs must look for the "vers=4" mount option Thus this logic checks for "nfs4" first then looks for the NFS version setting. Note that we could handle unmounting entirely in the kernel, but that won't help older kernels that have this issue. See: https://bugzilla.linux-nfs.org/show_bug.cgi?id=189 Signed-off-by: Chuck Lever <chuck.lever@oracle.com> Signed-off-by: Steve Dickson <steved@redhat.com>
* mount.nfs: mountproto does not support RDMAChuck Lever2010-10-141-1/+5
| | | | | | | | | | | Clean up. Our client does not support the MNT protocol on RDMA. nfs_mount_protocol() isn't invoked for RDMA mounts (they are shunted off before nfs_options2pmap() is invoked). But in case it ever is, it should return the expected response. Signed-off-by: Chuck Lever <chuck.lever@oracle.com> Signed-off-by: Steve Dickson <steved@redhat.com>
* mount.nfs: Eliminate compiler warnings in utils/mount/network.cChuck Lever2010-10-141-16/+19
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Clean up. network.c: In function get_socket: network.c:431: warning: dereferencing type-punned pointer might break strict-aliasing rules network.c: In function probe_bothports: network.c:759: warning: dereferencing type-punned pointer might break strict-aliasing rules network.c:762: warning: dereferencing type-punned pointer might break strict-aliasing rules network.c: In function nfs_probe_statd: network.c:775: warning: dereferencing type-punned pointer might break strict-aliasing rules network.c: In function nfs_call_umount: network.c:904: warning: dereferencing type-punned pointer might break strict-aliasing rules network.c: In function nfs_ca_sockname: network.c:1106: warning: dereferencing type-punned pointer might break strict-aliasing rules network.c:1112: warning: dereferencing type-punned pointer might break strict-aliasing rules Signed-off-by: Chuck Lever <chuck.lever@oracle.com> Signed-off-by: Steve Dickson <steved@redhat.com>
* mount.nfs: Eliminate compiler warning in utils/mount/parse_opt.cChuck Lever2010-10-141-1/+1
| | | | | | | | | | | | parse_opt.c: In function po_rightmost: parse_opt.c:517: warning: conversion to int from unsigned int may change the sign of the result "i" contains the function's result value, so it should be defined as the same type as the function's return type. Signed-off-by: Chuck Lever <chuck.lever@oracle.com> Signed-off-by: Steve Dickson <steved@redhat.com>
* mount.nfs: Eliminate compiler warning in utils/mount/nfsumount.cChuck Lever2010-10-141-4/+4
| | | | | | | | | | | | Clean up. nfsumount.c:374: warning: ISO C forbids omitting the middle term of a ?: expression This is also probably harmless, but let's make the code unambiguous. Signed-off-by: Chuck Lever <chuck.lever@oracle.com> Signed-off-by: Steve Dickson <steved@redhat.com>
* mount.nfs: Eliminate compiler warning in utils/mount/nfsumount.cChuck Lever2010-10-141-0/+1
| | | | | | | | | | | | Clean up. nfsumount.c:265: warning: no previous prototype for nfsumount It's also a good idea if the compiler can ensure that the prototype in nfsmount.h matches the actual function defined in nfsumount.c. Signed-off-by: Chuck Lever <chuck.lever@oracle.com> Signed-off-by: Steve Dickson <steved@redhat.com>
* mount.nfs: Eliminate compiler warnings in utils/mount/mount.cChuck Lever2010-10-141-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | Clean up. mount.c: In function parse_opt: mount.c:354: warning: conversion to size_t from int may change the sign of the result mount.c:354: warning: conversion to int from size_t may change the sign of the result mount.c:359: warning: conversion to size_t from int may change the sign of the result mount.c:359: warning: conversion to int from size_t may change the sign of the result mount.c: In function parse_opts: mount.c:374: warning: conversion to int from size_t may change the sign of the result mount.c:377: warning: conversion to size_t from int may change the sign of the result Character string lengths are usually size_t anyway. We can easily avoid the implicit type cast here. Signed-off-by: Chuck Lever <chuck.lever@oracle.com> Signed-off-by: Steve Dickson <steved@redhat.com>
* mount.nfs: Eliminate compiler warning in utils/mount/mount.cChuck Lever2010-10-141-1/+1
| | | | | | | | | | | | | Clean up. mount.c: At top level: mount.c:324: warning: no previous prototype for ?mount_usage? mount_usage() has no callers outside of utils/mount/mount.c and no prototype is provided in a header file. Make it static. Signed-off-by: Chuck Lever <chuck.lever@oracle.com> Signed-off-by: Steve Dickson <steved@redhat.com>
* mount.nfs: Eliminate compiler warnings in utils/mount/version.hChuck Lever2010-10-141-3/+3
| | | | | | | | | | | | | | | | Clean up. In file included from mount.c:50: version.h: In function linux_version_code: version.h:48: warning: conversion to unsigned int from int may change the sign of the result version.h:48: warning: conversion to unsigned int from int may change the sign of the result version.h:48: warning: conversion to unsigned int from int may change the sign of the result Signed-off-by: Chuck Lever <chuck.lever@oracle.com> Signed-off-by: Steve Dickson <steved@redhat.com>
* mount.nfs: Eliminate compiler warning in utils/mount/mount.cChuck Lever2010-10-141-10/+11
| | | | | | | | | | | | | | | | Clean up. In file included from mount.c:41: mount_config.h:35: warning: no previous prototype for mount_config_opts Functions defined in include files are usually declared as "static inline," eliminating the need for a forward declaration. While I was there, I also fixed the macro that prevents including mount_config.h multiple times, and fixed some white space damage. Signed-off-by: Chuck Lever <chuck.lever@oracle.com> Signed-off-by: Steve Dickson <steved@redhat.com>
* mount.nfs: Eliminate compiler warningsChuck Lever2010-10-141-13/+16
| | | | | | | | | | | | | | | | | | | | Clean up. fstab.c: In function ?lock_mtab?: fstab.c:385: warning: declaration of ?errsv? shadows a previous local fstab.c:367: warning: shadowed declaration is here fstab.c:407: warning: declaration of ?errsv? shadows a previous local fstab.c:367: warning: shadowed declaration is here fstab.c:417: warning: declaration of ?tries? shadows a previous local fstab.c:325: warning: shadowed declaration is here fstab.c:422: warning: declaration of ?errsv? shadows a previous local fstab.c:367: warning: shadowed declaration is here These are probably harmless. Reusing a variable name, however, is a little confusing to follow when reading the code. Signed-off-by: Chuck Lever <chuck.lever@oracle.com> Signed-off-by: Steve Dickson <steved@redhat.com>
* nfs-utils: Fixed typo in NFS man pageSteve Dickson2010-10-131-1/+1
| | | | | | | | Chuck pointed out there was a grammar typo in addition to the spelling typo. Here is a revised version of the patch. Signed-off-by: Jim Rees <rees@umich.edu> Signed-off-by: Steve Dickson <steved@redhat.com>
* The kernel 2.6.37 has a add new mount option: local_lock.Suresh Jayaraman2010-09-291-0/+44
| | | | | | | Document the new option in the nfs(5) man page. Signed-off-by: Suresh Jayaraman <sjayaraman@suse.de> Signed-off-by: Steve Dickson <steved@redhat.com>
* nfs-utils: Fix source code character encodingChuck Lever2010-09-272-2/+2
| | | | | | | | | | | | | Minor clean up. Most modern Linux distributions set UTF-8 locales. Standardize the character encoding of source files on UTF-8, to squelch vim com- plaints. I probably missed a few spots. Signed-off-by: Chuck Lever <chuck.lever@oracle.com> Signed-off-by: Steve Dickson <steved@redhat.com>
* mount.nfs: Don't do anything fancy if this is a remountChuck Lever2010-09-161-0/+28
| | | | | | | | | | | | | | | | We don't want to append "vers=4" or perform any negotiation if the "remount" mount option was specified. It will just end in tears. This attempts to address https://qa.mandriva.com/show_bug.cgi?id=60311 and https://bugzilla.linux-nfs.org/show_bug.cgi?id=187 Signed-off-by: Chuck Lever <chuck.lever@oracle.com> Signed-off-by: Steve Dickson <steved@redhat.com>
* mount.nfs: Refactor mount version and protocol autonegotiationChuck Lever2010-09-161-14/+53
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Clean up. I'm beginning to agree with Bruce and Steve's assessment that the fallthrough switch case in nfs_try_mount() is more difficult to read and understand than it needs to be. The logic that manages negotiating NFS version and protocol settings is getting more complex over time anyway. So let's split the autonegotiation piece out of nfs_try_mount(). We can reduce indenting, and use cleaner switch-based logic. Also, adding more comments can only help. Neil also suggested replacing the pre-call "errno = 0" trick. The lower-level functions may try to mount several times (given a list of addresses to try). errno could be set by any of those. The mount request will succeed at some point, and "success" is returned, but errno is still set to some non-zero value. The kernel version check in nfs_try_mount() is more or less loop invariant: it's impossible for the result of that test to change between retries. So we should be able to safely move it to the logic that sets the initial value of mi->version. This patch is not supposed to cause a behavioral change. Signed-off-by: Chuck Lever <chuck.lever@oracle.com> Signed-off-by: Steve Dickson <steved@redhat.com>
* Cleaned up a warning from commit 44f09b7Steve Dickson2010-09-091-1/+0
| | | | Signed-off-by: Steve Dickson <steved@redhat.com>
* mount.nfs: Prepare way for "vers=4,rdma" mountsChuck Lever2010-09-091-7/+0
| | | | | | | | | | | | | At some point, when the kernel starts to support "vers=4,rdma" mounts, we will want the mount.nfs command to pass "vers=4,rdma" mounts instead of rejecting them. Assuming that the kernel will reject these today with EPROTONOSUPPORT, that would cause the version fallback logic to go to "vers=3,rdma" automatically. So the extra check we have now is not needed anyway. Signed-off-by: Chuck Lever <chuck.lever@oracle.com> Signed-off-by: Steve Dickson <steved@redhat.com>
* mount.nfs: Support an "rdma" mount optionChuck Lever2010-09-092-3/+17
| | | | | | | | | | | | | | | | | | The kernel NFS client's mount option parser recognizes a stand-alone "rdma" mount option, similar to the legacy "udp" and "tcp" options. The mount.nfs command text-based mount option parser used to pass "rdma" straight to the kernel, but since we've started handling MNT in the kernel instead of in user space, "rdma" on the command line has not worked. Until now, no-one has noticed, especially since an "rdma" mount option isn't documented in nfs(5). Support "rdma" in mount.nfs command, and document it in nfs(5). Signed-off-by: Chuck Lever <chuck.lever@oracle.com> Signed-off-by: Steve Dickson <steved@redhat.com>
* mount.nfs: Use nfs_nfs_protocol() for checking for proto=rdmaChuck Lever2010-09-091-5/+12
| | | | | | | | Clean up: Now that nfs_get_proto() can recognize "rdma" we can re-use nfs_nfs_protocol() instead of ad hoc checks for "proto=rdma". Signed-off-by: Chuck Lever <chuck.lever@oracle.com> Signed-off-by: Steve Dickson <steved@redhat.com>
* Clarification about options supported by different versionsGuillaume Rousse2010-09-091-30/+20
| | | | | Signed-off-by: Guillaume Rousse <Guillaume.Rousse@inria.fr> Signed-off-by: Steve Dickson <steved@redhat.com>
* Fix the description of nfsversion mount option in the man nfs pageGuillaume Rousse2010-08-171-8/+3
| | | | Signed-off-by: Steve Dickson <steved@redhat.com>
* Removed warnings from configfile.cSteve Dickson2010-08-091-2/+4
| | | | | | | configfile.c:195: warning: 'inline' is not at beginning of declaration configfile.c:232: warning: 'inline' is not at beginning of declaration Signed-off-by: Steve Dickson <steved@redhat.com>
* Removed warnings from network.cSteve Dickson2010-08-091-1/+2
| | | | | | | network.c: In function 'nfs_verify_family': network.c:1366: warning: unused parameter 'family' Signed-off-by: Steve Dickson <steved@redhat.com>
* Removed warnings from nfs4mount.cSteve Dickson2010-08-091-1/+1
| | | | | | | nfs4mount.c: In function 'fill_ipv4_sockaddr': nfs4mount.c:149: warning: comparison between signed and unsigned integer expressions Signed-off-by: Steve Dickson <steved@redhat.com>
* Removed warnings from nfsmount.cSteve Dickson2010-08-091-2/+6
| | | | | | | | | | nfsmount.c: In function 'nfsmount': nfsmount.c:513: warning: missing initializer nfsmount.c:513: warning: (near initialization for 'mnt_server.saddr') nfsmount.c:514: warning: missing initializer nfsmount.c:514: warning: (near initialization for 'nfs_server.saddr') Signed-off-by: Steve Dickson <steved@redhat.com>
* mount.nfs: silently fails when the network protocol is not foundSteve Dickson2010-06-222-8/+27
| | | | | | | mount.nfs should display some type of error diagnostics when the network protocol can not be determined. Signed-off-by: Steve Dickson <steved@redhat.com>
* mount: silently fails when bad option values are givenSteve Dickson2010-06-222-5/+19
| | | | | | | | mount.nfs should not only fail when an invalid option values are supplied (as it does), it should also print a diagnostic message identifying the problem Signed-off-by: Steve Dickson <steved@redhat.com>
* mount: Mount should retry unreachable hostsChuck Lever2010-03-191-0/+1
| | | | | | | | | | | | | | | | | | | | | Currently if a server is up but not responding (ie, it answers ARP requests, but not NFS or RPC requests), mount retries or backgrounds itself waiting for the server. If the server is not responding on the network at all, mount fails the mount request immediately. Users might find it more useful if mount retried in both cases. Note that this change means attempting to mount using a misspelled server name will "hang" for the retry amount. I suppose the error message isn't very helpful whether it fails immediately or waits a couple of minutes, though I imagine that an unreachable server is a much more common occurrence than a misspelling. Reported-by: Daniel Goering <g_daniel@gmx.net> Signed-off-by: Chuck Lever <chuck.lever@oracle.com> Signed-off-by: Steve Dickson <steved@redhat.com>
* nfs-utils: add and use nfs_authsys_createJeff Layton2010-03-011-3/+12
| | | | | | | | | | | | | | | | | | The current mount, umount and showmount code uses authunix_create_default to get an auth handle. The one provided by glibc returned a truncated list of groups when there were more than 16 groups. libtirpc however currently does an abort() in this case, which causes the program to crash and dump core. nfs-utils just uses these auth handles for the MNT protocol, so the group list doesn't make a lot of difference here. Add a new function that creates an auth handle with a supplemental gids list that consists only of the primary gid. Have nfs-utils use that function anywhere that it currently uses authunix_create_default. Also, have the caller properly check for a NULL return from that function. Signed-off-by: Jeff Layton <jlayton@redhat.com> Signed-off-by: Steve Dickson <steved@redhat.com>
* mount: Set protocol family properly for "udp" and "tcp"Chuck Lever2010-02-181-1/+2
| | | | | | | | | | | | | | | | | | | | In nfs_nfs_proto_family(), *family is never set if the legacy "udp" or "tcp" mount options are specified. The result is an error message at umount time, for example: umount.nfs: DNS resolution failed for 2001:5c0:1101:2f00:250:8dff:fe95:5c61: ai_family not supported even if mount was built with IPv6 support. The man page says that "udp" is a synonym for "proto=udp", and likewise for "tcp". Thus, we don't look at config_default_family here, but always use AF_INET explicitly, to be consistent with the meaning of proto=. Signed-off-by: Chuck Lever <chuck.lever@oracle.com> Reviewed-by: Jeff Layton <jlayton@redhat.com> Signed-off-by: Steve Dickson <steved@redhat.com>
* mount.nfs: make nfs_{nfs,mount}_proto set errno on errorJeff Layton2010-02-121-6/+18
| | | | | | | | | Have nfs_nfs_proto and nfs_mount_proto set errno to EPROTONOSUPPORT on error. This helps default_value to display sane warning messages. Signed-off-by: Jeff Layton <jlayton@redhat.com> Reviewed-by: Chuck Lever <chuck.lever@oracle.com> Signed-off-by: Steve Dickson <steved@redhat.com>
* mount.nfs: return error if proto= option specified IPv6 when IPv6 isn't ↵Jeff Layton2010-02-121-16/+43
| | | | | | | | | | | | | | | supported Right now, there's nothing that expressly forbids someone from specifying proto=tcp6 for instance, even when nfs-utils it built without IPv6 support. This may not work well if (for instance) they are using NFSv3, since statd won't support IPv6. Explicitly return an error if someone specifies an IPv6 proto= or mountproto= option and IPv6 isn't supported. Signed-off-by: Jeff Layton <jlayton@redhat.com> Reviewed-by: Chuck Lever <chuck.lever@oracle.com> Signed-off-by: Steve Dickson <steved@redhat.com>
* This is the second iteration of this patch. The only difference hereJeff Layton2010-02-122-10/+14
| | | | | | | | | | | | | | | | | | | | | is that this one has default_value call nfs_nfs_proto_family regardless of whether IPV6_SUPPORTED is set. When IPv6 is enabled, the Proto= config file option is treated as a netid, and the address family for lookups is selected based on that setting. The Defaultproto= option however still only affects the protocol setting for the sockets (IPPROTO_*) and not the address family. This patch makes it so that if someone sets the "Defaultproto=" option in the nfsmount.conf, it's used to determine the default address family for lookups as well as the protocol type. This gives users a way to force a particular address family to be used universally for mounts and brings the behavior of the Defaultproto= option in line with the Proto= option. Signed-off-by: Jeff Layton <jlayton@redhat.com> Signed-off-by: Steve Dickson <steved@redhat.com>
* text-based mount: Support protocol family negotiationChuck Lever2010-02-121-11/+60
| | | | | | | | | | | | | Jeff Layton pointed out that the current negotiation logic in stropts.c simply doesn't handle the case where a server may have an IPv6 address and an IPv4 address, but only NFS/IPv4 is supported. This is typical of all currently deployed Linux servers. Add support for trying all addresses returned from DNS when "proto=" is not specified on the command line. Signed-off-by: Chuck Lever <chuck.lever@oracle.com> Signed-off-by: Steve Dickson <steved@redhat.com>
* text-based mount: Set addr= option in nfs_try_mount_foo()Chuck Lever2010-02-121-4/+19
| | | | | | | | | | | | | When retrying a mount request with a different server address, the addr= option may change each time through the fg/bg loop. Instead of setting the addr= option in nfs_validate_options(), set it in nfs_try_mount_v2v3() and nfs_try_mount_v4(). This is much the same thing we did recently with the version-specific mount options which might change each time through the fg/bg retry loop. Signed-off-by: Chuck Lever <chuck.lever@oracle.com> Signed-off-by: Steve Dickson <steved@redhat.com>
* text-based mount: Replace nfs_lookup() with getaddrinfo(3)Chuck Lever2010-02-121-8/+24
| | | | | | | | | | | | | | Originally I thought it would be best to share the DNS query code between the legacy mount code and the new text-based code, hence the introduction of nfs_lookup(). However, it now appears we want the text-based code to do a little more than take the first address returned by the query. So, let's invoke getaddrinfo(3) directly in stropts.c, and save the returned addrinfo struct until the end of processing. Signed-off-by: Chuck Lever <chuck.lever@oracle.com> Signed-off-by: Steve Dickson <steved@redhat.com>
* text-based mount: Retry when server can't be reachedChuck Lever2010-02-122-1/+9
| | | | | | | | | | | | | | | | | | | | | | | | We want new default behavior from mount.nfs when the server refuses a connection. Since connection refusal can be spurious (for example, if the server is rebooting), mount.nfs should retry. NFS shares that are automatically mounted by /etc/fstab at boot time may be problematic. The new behavior can be disabled by specifying the "retry=0" mount option, or these mounts can be changed to background mounts by specifying the "bg" option. A kernel code change is still required for the mount(2) system call to return ECONNREFUSED for NFSv4 mounts (see 2.6.33). For v2/v3, the version and transport negotiation logic in mount.nfs should drive a retry if the server's rpcbind can't be reached. Note that if a v2/v3 mount request encounters an unregistered NFS service, it will still fail immediately. That wouldn't be too hard to change as well, but there are many more corner cases there where failing immediately is appropriate. Signed-off-by: Chuck Lever <chuck.lever@oracle.com> Signed-off-by: Steve Dickson <steved@redhat.com>
* Added the sys/stat.h header file to a number ofSteve Dickson2010-01-222-0/+2
| | | | | | files which ensure the S_ISDIR() macro is defined. Signed-off-by: Steve Dickson <steved@redhat.com>
* mount.nfs: Configuration file parser ignoring optionsSteve Dickson2010-01-201-5/+21
| | | | | | | | | | When the protocol version is set on the command line, none of the variables set in the configuration file are passed down to the kernel due to a bug in the parsing routine. Tested-by: Jeff Layton <jlayton@redhat.com> Signed-off-by: Steve Dickson <steved@redhat.com>