commit 3030aded70e616cdeac4223785754b86a33b587d Author: Eberhard Kuemmerle Date: Mon Sep 27 13:24:48 2010 -0400 Added the -p flag to the svcgssd manpage Signed-off-by: Eberhard Kuemmerle Signed-off-by: Steve Dickson commit 6cc96cada639a823961d5d8a136cbcdc8b8952b8 Author: Eberhard Kuemmerle Date: Mon Sep 27 13:16:23 2010 -0400 svcgssd: Adding a <-p principal> flag Allow the principal that is used to get the machines creds definable on the command like with the new '-p '. This is useful in cluster environments. Signed-off-by: Eberhard Kuemmerle Signed-off-by: Steve Dickson commit 837796686ad8f9178c7b6855ada728a53ae511e3 Author: David Lecorfe Date: Mon Sep 27 13:29:31 2010 -0400 nfs-iostat.py: don't wait for an extra interval when given a count If I invoke the tool with an interval of 10 and a count of 2, it will: - show the summary - sleep 10s - show the stats for the last 10s - sleep 10s - exit Signed-off-by: David Lecorfe Signed-off-by: Steve Dickson commit eaa588a137b0b2f38aa9e9c542635a222e51ee48 Author: Chuck Lever Date: Mon Sep 27 10:16:34 2010 -0400 nfsd: Enable IPv6 support in rpc.nfsd again. Revert commit b2a3cd59 so that rpc.nfsd can create IPv6 listener sockets for the kernel. Signed-off-by: Chuck Lever Signed-off-by: Steve Dickson commit c18e9a780f376b868e62b75abe64b0fd9915ada5 Author: Chuck Lever Date: Mon Sep 27 10:14:34 2010 -0400 mountd: Update mountd/exportfs man pages to reflect IPv6 changes Document IPv6 support in rpc.mountd and exportfs, and clarify existing language in the man page. Clean up: Use bold consistently for program names, and italics consistently for file names. Use "rpc.mountd" consistently as the name of the mountd daemon. Signed-off-by: Chuck Lever Signed-off-by: Steve Dickson commit 7e454e03131f56872639fe7b62b726479b22c087 Author: Chuck Lever Date: Mon Sep 27 10:13:39 2010 -0400 mountd: Use MNT status values instead of NFSERR Clean up: The MNT protocol has its own enum type defining error status values. While the values can be the same as the NFSERR enum type on some systems, it's not guaranteed to be true everywhere. Signed-off-by: Chuck Lever Signed-off-by: Steve Dickson commit ef32b76ae37926faacaf4b8121eba638567c4692 Author: Chuck Lever Date: Mon Sep 27 10:11:18 2010 -0400 mountd: Fix up version and usage messages Clean up: rpc.mountd is no longer known as kmountd. Use the program's basename rather than the full pathname for the usage message. Display a version message at start up similar to statd's. Signed-off-by: Chuck Lever Signed-off-by: Steve Dickson commit 2c15cf2963367dee7106964c38ab7b1e30ba347d Author: Chuck Lever Date: Mon Sep 27 10:09:49 2010 -0400 mountd: Unregister mountd if my_svc_run() returns Fix a long standing bug: when my_svc_run() returns, mountd should unregister itself with the local rpcbind so that it can subsequently start cleanly. Log a more helpful error message in this case. Signed-off-by: Chuck Lever Signed-off-by: Steve Dickson commit b551b1fd0052de9b8c674b30c39d9f2a1e9d79cc Author: Chuck Lever Date: Mon Sep 27 10:09:10 2010 -0400 mountd: Support TI-RPC mountd listener If TI-RPC is available, use it to create mountd's svc listener. If not, use the old function, rpc_init(), to create mountd's listener. IPv6 can be supported if TI-RPC is available. In this case, /etc/netconfig is searched to determine which transports to advertise. Signed-off-by: Chuck Lever Signed-off-by: Steve Dickson commit c5571da8e92f87fc9ec6e8aa8075c69497361c87 Author: Chuck Lever Date: Mon Sep 27 10:06:35 2010 -0400 mountd: Make NFS version checks more strict Ensure users and programmers specify NFS version numbers correctly. This also makes the next patch more clean. Signed-off-by: Chuck Lever Signed-off-by: Steve Dickson commit 05f93b531d59df6e976d9b40c97b51546524040a Author: Chuck Lever Date: Mon Sep 27 09:50:11 2010 -0400 nfs-utils: Fix source code character encoding 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 Signed-off-by: Steve Dickson commit 5341111d4b34bcd1b1263d5ed215cbe375aa9314 Author: Steve Dickson Date: Mon Sep 27 09:35:26 2010 -0400 libnfs.a: Remove support/nfs/fstab.c Signed-off-by: Steve Dickson commit 72ae199db4be7bf0092e15adaa8a43ce2434bf9f Author: Jeff Layton Date: Thu Sep 16 14:34:39 2010 -0400 rpc.nfsd: mount up nfsdfs is it doesn't appear to be mounted yet There's a bit of a chicken and egg problem when nfsd is run the first time. On Fedora/RHEL at least, /proc/fs/nfsd is mounted up whenever nfsd is plugged in via a modprobe.conf "install" directive. If someone runs rpc.nfsd without plugging in nfsd.ko first, /proc/fs/nfsd won't be mounted and rpc.nfsd will end up using the legacy nfsctl interface. After that, nfsd will be plugged in and subsequent rpc.nfsd invocations will use that instead. This is a problem as some nfsd command-line options are ignored when the legacy interface is used. It'll also be a problem for people who want IPv6 enabled servers. The upshot is that we really don't want to use the legacy interface unless there is no other option. To avoid this situation, have rpc.nfsd check to see if the "threads" file is already present. If it's not, then make an attempt to mount /proc/fs/nfsd. This is a "best-effort" sort of thing, however so we just ignore the return code from the mount attempt and fall back to using nfsctl() if it fails. Signed-off-by: Jeff Layton Signed-off-by: Steve Dickson commit 63afb96b9d36e72782ad25ca496896029a9d9061 Author: Chuck Lever Date: Thu Sep 16 14:25:52 2010 -0400 libexport.a: Enable IPv6 support in hostname.c If --enable-ipv6 is specified when building nfs-utils, libexport's host_foo() helpers can now return both IPv4 and IPv6 addresses. This means IPv6 presentation addresses and IPv6 DNS resolution results are handled properly in the mountd cache and /etc/exports, but does not yet enable IPv6 mountd listeners. Signed-off-by: Chuck Lever Signed-off-by: Steve Dickson commit d901e329e380a2adc22783b1b241e414aa24cf51 Author: Chuck Lever Date: Thu Sep 16 14:21:48 2010 -0400 mountd: Ensure cache downcall can handle IPv6 addresses Signed-off-by: Chuck Lever Signed-off-by: Steve Dickson commit 1ba28ec59f39de0bc4953b42556d847efbb508eb Author: Chuck Lever Date: Thu Sep 16 14:21:08 2010 -0400 mountd: Handle IPv6 addresses in kernel auth_unix_ip upcalls Signed-off-by: Chuck Lever Signed-off-by: Steve Dickson commit ffe8c9a084fec4fdd3acfcf4b36fbe434d297b82 Author: Chuck Lever Date: Thu Sep 16 14:19:19 2010 -0400 mountd: clean up cache API Clean up: Squelch compiler warnings and document public parts of cache API. cache.c: At top level: cache.c:67: warning: no previous prototype for auth_unix_ip cache.c:123: warning: no previous prototype for auth_unix_gid cache.c:217: warning: no previous prototype for get_uuid cache.c:247: warning: no previous prototype for uuid_by_path cache.c:326: warning: no previous prototype for nfsd_fh cache.c:745: warning: no previous prototype for nfsd_export cache.c:820: warning: no previous prototype for cache_open cache.c:832: warning: no previous prototype for cache_set_fd cache.c:841: warning: no previous prototype for cache_process_req cache.c:921: warning: no previous prototype for cache_export cache.c:953: warning: no previous prototype for cache_get_filehandle Signed-off-by: Chuck Lever Signed-off-by: Steve Dickson commit 6f189dae5eb38800c8ae3e2d5c098d11fb44d7d5 Author: Chuck Lever Date: Thu Sep 16 14:17:08 2010 -0400 exportfs: Enable IPv6 support in matchhostname() To gain IPv6 support in matchhostname(), simply replace the socket address comparison helpers with the generic versions that can handle IPv4 and IPv6. host_addrinfo() (called by matchhostname()) returns IPv6 addresses only if IPv6 support is enabled. Signed-off-by: Chuck Lever Signed-off-by: Steve Dickson commit 10a6b17d3588647ab5e1ee81ba40f1ce12a5184d Author: Chuck Lever Date: Thu Sep 16 13:54:21 2010 -0400 mountd: Support IPv6 in mountlist_list() Replace inet_aton(3) and gethostbyaddr(3) calls in mountlist_list() with calls to the new host_foo() DNS helpers. The new functions will support IPv6 without additional changes, once IPv6 is enabled in the generic hostname helpers. Signed-off-by: Chuck Lever Signed-off-by: Steve Dickson commit 76209cdbe989ee4cdfbf489f2695ac779457e763 Author: Chuck Lever Date: Thu Sep 16 13:51:51 2010 -0400 mountd: Handle memory exhaustion in mountlist_list() I'm about to replace inet_aton(3)/gethostbyaddr(3) with host_pton()/host_canonname() in mountlist_list(). Since host_canonname() returns a string allocated with strdup(3) instead of xstrdup(), mountlist_list() must now deal with memory exhaustion properly. Signed-off-by: Chuck Lever Signed-off-by: Steve Dickson commit a8348c2c48d45f991995707fa22a2fa441aaa907 Author: Chuck Lever Date: Thu Sep 16 13:48:38 2010 -0400 mountd: Add mountlist_freeall() I'm about to add a second bit of logic that needs to free all mountlist records, so introduce a helper for freeing them. Signed-off-by: Chuck Lever Signed-off-by: Steve Dickson commit 454aea5dad83ca75f3154ff12ecff39169703e69 Author: Chuck Lever Date: Thu Sep 16 13:46:26 2010 -0400 mountd: support IPv6 in mountlist_del_all() Replace IPv4-specific code in the mountlist_del_all() path with code that is address family agnostic. Signed-off-by: Chuck Lever Signed-off-by: Steve Dickson commit 4210d6f0c9cad57907877bf1e5d32ebe4a27bf17 Author: Chuck Lever Date: Thu Sep 16 13:44:02 2010 -0400 mountd: Support IPv6 in mountd's svc routines Replace IPv4-specific code with use of our generic hostname helpers in the routines that handle incoming MNT RPC requests. These functions will support IPv6 without additional changes, once IPv6 is enabled in the generic hostname helpers. As part of this update, I've modified all of mountd's _svc routines to use a debug message format that is consistent with statd. It may be overkill for some of these; if so we can pull them out later. Signed-off-by: Steve Dickson commit f35762f959cc5f29ad7817f8b7968e3792132651 Author: Chuck Lever Date: Thu Sep 16 13:39:39 2010 -0400 mountd: add IPv6 support in auth_authenticate() Make the entire auth_authenticate() code path address-family agnostic. Signed-off-by: Chuck Lever Signed-off-by: Steve Dickson commit 29b8a7700129d9768e3e2d94c81eec9f84ba8691 Author: Chuck Lever Date: Thu Sep 16 09:32:52 2010 -0400 libnfs.a: Fix API for getfh() & friends This is more of a clean-up than a behavioral change. POSIX requires that a "struct sockaddr" is the same size as a "struct sockaddr_in". Therefore, a variable or field of type "struct sockaddr" cannot contain an AF_INET6 address. However, "struct sockaddr *" is often used to reference a generic (ie non-address family specific) socket address, generating some confusion about this. The nfsctl_arg struct uses a struct sockaddr (not a pointer) to pass the client's IP address to the kernel. This means the legacy nfsctl() kernel API can never support IPv6. Fortunately for us, this legacy interface was replaced by a text-based cache interface a few years back. We don't need to support non-AF_INET addresses here. The getfh() functions in nfs-utils provide a handy C API for the kernel's nfsctl interface. The getfh() functions still take a struct sockaddr *, though, and that can imply that a non-IPv4 address can be passed via this API. To make it abundantly clear that only IPv4 addresses can be used with this interface, change the synopses of getfh() and friends to take a struct sockaddr_in * instead of a struct sockaddr * . This makes these functions conform with other places in mountd and exportfs that already grok the difference between a struct sockaddr and a struct sockaddr_in. While we're here... Introduce some nice documenting comments for the get_fh() functions, and... Since mountd will support IPv6 in the near future, assert that the family of client addresses passed to this API is indeed AF_INET, in order to prevent non-AF_INET addresses from ever being passed to the legacy nfsctl() interface. Signed-off-by: Chuck Lever Signed-off-by: Steve Dickson commit a88c279992f4b63e3dcaac9930e300fd4bb03dd7 Author: Chuck Lever Date: Thu Sep 16 07:28:18 2010 -0400 mount.nfs: Don't do anything fancy if this is a remount 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 Signed-off-by: Steve Dickson commit 6f73daf5a5711dc0620f7d43c61c4fd57c0d3f80 Author: Chuck Lever Date: Thu Sep 16 07:26:07 2010 -0400 mount.nfs: Refactor mount version and protocol autonegotiation 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 Signed-off-by: Steve Dickson commit 64bf8db367fd43e80dd135b460afc157808647fa Author: Bian Naimeng Date: Thu Sep 16 07:12:47 2010 -0400 rpc.idmapd: Type of idmap client should be defined by ic_id not ic_clid. The type of idmap_client is defined by idmap_client.ic_id for nfs, so nfsd should have the same style. Signed-off-by: Bian Naimeng Signed-off-by: Steve Dickson commit 7f77ef90ad52eced1552efc2242e063aa4501ddc Author: Benny Halevy Date: Tue Jul 20 08:40:34 2010 +0300 nfsstat: add release_lockowner to client stats Signed-off-by: Benny Halevy commit bf6da0a22d971364dae25ec2f62c01fbd2960f07 Author: Steve Dickson Date: Thu Sep 9 10:47:32 2010 -0400 Cleaned up a warning from commit 44f09b7 Signed-off-by: Steve Dickson commit 911630538580cdaaee1c37cdf1a8b35b8ed6b23f Author: Chuck Lever Date: Wed Sep 8 13:28:24 2010 -0400 mount.nfs: Prepare way for "vers=4,rdma" mounts 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 Signed-off-by: Steve Dickson commit f99d1b8e8768ab96b51bed52f21a626ac9a4797f Author: Chuck Lever Date: Wed Sep 8 13:27:31 2010 -0400 mount.nfs: Support an "rdma" mount option 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 Signed-off-by: Steve Dickson commit 44f09b7c4c79ca184a29138078c68a4db7aeb85a Author: Chuck Lever Date: Wed Sep 8 13:26:34 2010 -0400 mount.nfs: Use nfs_nfs_protocol() for checking for proto=rdma 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 Signed-off-by: Steve Dickson commit a77ca5c6a79486dc8c5a4c327fe5310f5d497766 Author: Chuck Lever Date: Wed Sep 8 13:25:56 2010 -0400 getport: Recognize "rdma" and "rdma6" netid The mount.nfs command must recognize the values of "rdma" and "rdma6" with the "proto=" mount option. Typically the mount.nfs command relies on libtirpc or getprotobyname(3) to recognize netids and translate them to protocol numbers. RFCs 5665 and 5666 define the "rdma" and "rdma6" netids. IANA defines a specific port number for NFS over RDMA (20049), but has not provided a protocol name and number for RDMA transports, and is not expected to. The best we can do is translate these by hand, as needed, to get RDMA mount requests to the kernel without erroring out. Only the forward translation is needed until such time that "rdma" and "rdma6" start to appear in rpcbind registries. For now, the version and transport negotiation logic is skipped, avoiding rpcbind queries for RDMA mounts. Note: As of kernel 2.6.36, the kernel's NFS over RDMA transport capability does not support IPv6. Signed-off-by: Chuck Lever Signed-off-by: Steve Dickson commit 57f36cd692c56b3b62705b5fafef4c25561a39ff Author: Guillaume Rousse Date: Thu Sep 9 10:33:47 2010 -0400 Clarification about options supported by different versions Signed-off-by: Guillaume Rousse Signed-off-by: Steve Dickson commit b7df3370555877598d9f2ef49fae2ad4458e9f72 Author: Chuck Lever Date: Thu Sep 9 10:27:17 2010 -0400 libexport.a: Refactor init_netmask() Instead of a single function that can handle both AF_INET and AF_INET6 addresses, two separate functions might be cleaner. The original plan was to keep code redundancy at a minimum, but the resulting code was cumbersome at best. I think I've traded a little extra code for something that will be much easier to read, understand, and maintain. I've also eliminated the "#if / #endif" instances inside the functions. Signed-off-by: Chuck Lever Signed-off-by: Steve Dickson commit 60abb9889cea52022adf9c8bb946e9d19d79f9ed Author: Chuck Lever Date: Tue Aug 31 15:31:57 2010 -0400 libexport.a: IPv6 support in client_check() Introduce support for IPv6 in client_check()'s helpers. The local addrs_match() twins are no longer needed since we can use nfs_compare_addrs() now. Signed-off-by: Chuck Lever Signed-off-by: Steve Dickson commit 965b15b855c0c621462256b0ab687fc32644255a Author: Chuck Lever Date: Tue Aug 31 15:30:14 2010 -0400 libexport.a: IPv6 support for client_init_subnet() To parse and store an IPv6 host or subnet address, init_netmask() needs to handle 128 bit subnet masks. Unfortunately what once was a pretty simple little function has grown much larger. This logic must now not only parse IPv6 addresses correctly, but must also distinguish between IPv4 and IPv6. To avoid code duplication, I'm "bending" the cardinal rule of not using "#ifdef" inside functions. Signed-off-by: Chuck Lever Signed-off-by: Steve Dickson commit 2824097496f6b154befbf3b3d15dacf237b07f83 Author: Chuck Lever Date: Tue Aug 31 15:29:02 2010 -0400 libexport.a: Prepare init_subnetwork() for IPv6 support Retire the slash32 logic in inet_netmask() in favor of a more generic netmask parser that can support IPv6 addresses. If an invalid IP address string is given to inet_addr(3), it returns INADDR_NONE, which is actually a "valid" address (255.255.255.255). We're none the wiser to the substitution until something breaks later. This patch provides better sanity checking of the parsed address, now that such an error can be reported to client_init()'s callers. We can also check the prefixlen value a little more carefully as well. Signed-off-by: Chuck Lever Signed-off-by: Steve Dickson commit 03fc34b23c2bff48f54c2d889d7851a31fb64a3d Author: Chuck Lever Date: Tue Aug 31 15:27:19 2010 -0400 libexport.a: Use host helper to parse address in client_init() Take the first step towards making it possible to parse either IPv4 or IPv6 addresses in client_init(). It won't handle IPv6 until host_pton() has IPv6 support enabled, and it still doesn't deal with IPv6 netmasks yet. Signed-off-by: Chuck Lever Signed-off-by: Steve Dickson commit 502edf1df5e727cf88b19b634f60392652f35ddc Author: Chuck Lever Date: Tue Aug 31 15:25:35 2010 -0400 libexport.a: Prepare to recognize IPv6 addresses in client_gettype() The current open-coded parsing logic in client_gettype() will be hard to modify to recognize IPv6 addresses. Use a more generic mechanism for detecting IP presentation addresses. IPv6 will be enabled automatically in client_gettype() when host_pton() is changed to support IPv6 addresses. Signed-off-by: Chuck Lever Signed-off-by: Steve Dickson commit 26fd34002585e6a5aa09204b0b01d836fa83dcf3 Author: Chuck Lever Date: Tue Aug 24 07:19:34 2010 -0400 exportfs: Use xlog() for error reporting exportfs already invokes xlog_open() because libexport.a uses xlog() exclusively for error reporting and debugging messages. If we can use xlog() throughout exportfs itself, that enables xlog debugging messages everywhere in the code path. In addition, use xlog() instead of fprintf(stderr) for reporting errors in exportfs.c, to be consistent with libexport.a and other components of nfs-utils. Signed-off-by: Chuck Lever Signed-off-by: Steve Dickson commit 6d7babe6afae068e8a1054f785785d374788f5ee Author: Chuck Lever Date: Tue Aug 24 07:18:04 2010 -0400 exportfs: exportfs.c no longer needs #include "xmalloc.h" Clean up: No calls to xmalloc() or xstrdup() here. No need for the double #include of xmalloc.h. Signed-off-by: Chuck Lever Signed-off-by: Steve Dickson commit e22f5a9c8e53a2373e8a939771e964ad315cdc5f Author: Chuck Lever Date: Tue Aug 24 07:16:10 2010 -0400 statd: statd fails to monitor if no reverse mapping of mon_name exists Commit 8ce130c4 switched in the new statd_canonical_name() function that constructs a "unique" name statd can use to uniquely identify a monitor record. The legacy statd would monitor a client that sent an IP address with no reverse map as its caller_name. To remain bug-for-bug compatible, allow this case in the new statd. This shouldn't be a problem: statd_canonical_name() needs to create a unique name for the monitored host so it can keep track of monitor requests from the same remote. The IP address itself should work as well as the host's canonical name, in case there is no reverse mapping. We still enforce the requirement that a mon_name that is a DNS name must have a forward map to an IP address. Signed-off-by: Chuck Lever Signed-off-by: Steve Dickson commit 1bb84a09ff58d1314826945db2f3f1f63015e263 Author: Chuck Lever Date: Tue Aug 24 07:13:54 2010 -0400 libexport: Fix IP address check in check_netgroup() Neil Brown reports that recent changes to replace gethostby{addr,name}(3) with get{addr,info}name(3) may have inadvertently broken netgroup support. There used to be a gethostbyaddr(3) call in the third paragraph in check_netgroup(). The reason for that gethostbyaddr(3) call was that the first innetgr(3) call has already confirmed that hname is not a member of the netgroup. We also need to confirm that, if hname happens to be an IP address, the hostname bound to that IP address is not a member of the netgroup, either. Fix this by restoring appropriate address to hostname mapping of hname before retrying the innetgr(3) call. See http://marc.info/?l=linux-nfs&m=128084830214653&w=2 . Introduced by commit 0509d3428f523776ddd9d6e9fa318587d3ec7d84. Reviewed-by: Neil Brown Signed-off-by: Chuck Lever Signed-off-by: Steve Dickson commit abdc32b6af6f38a741a481aeefb5623916152498 Author: Chuck Lever Date: Tue Aug 24 07:06:14 2010 -0400 bexport: Add a common exit label to check_netgroup() check_netgroup() is going to be changed to free dynamically allocated resources before it returns, so a common exit point is needed. Reviewed-by: Neil Brown Signed-off-by: Chuck Lever Signed-off-by: Steve Dickson commit 396aac50f5addea2f4d62c25600ca68788a56d97 Author: Guillaume Rousse Date: Tue Aug 17 17:47:38 2010 -0400 Fix the description of nfsversion mount option in the man nfs page Signed-off-by: Steve Dickson commit e2003650c68cf47806fb24f7d88fae5524b70aab Author: Steve Dickson Date: Mon Jul 19 12:12:52 2010 -0400 Remove warnings from nfsctl.c nfsctl.c: In function 'expsetup': nfsctl.c:112: warning: signed and unsigned type in conditional expression Signed-off-by: Steve Dickson commit 1e472b3476cc6d7b95573b7d630d0fc51bebadf3 Author: Steve Dickson Date: Wed Aug 4 10:48:17 2010 -0400 Removed warnings from mountd.c mountd.c: In function 'mount_null_1_svc': mountd.c:195: warning: unused parameter 'rqstp' mountd.c:195: warning: unused parameter 'argp' mountd.c:195: warning: unused parameter 'resp' mountd.c: In function 'mount_dump_1_svc': mountd.c:213: warning: unused parameter 'argp' mountd.c: In function 'mount_umnt_1_svc': mountd.c:224: warning: unused parameter 'resp' mountd.c: In function 'mount_umntall_1_svc': mountd.c:248: warning: unused parameter 'argp' mountd.c:248: warning: unused parameter 'resp' mountd.c: In function 'mount_export_1_svc': mountd.c:258: warning: unused parameter 'argp' mountd.c: In function 'mount_exportall_1_svc': mountd.c:269: warning: unused parameter 'argp' mountd.c: In function 'mount_dump_1_svc': mountd.c:216: warning: unused parameter 'argp' mountd.c: In function 'mount_umnt_1_svc': mountd.c:227: warning: unused parameter 'resp' mountd.c: In function 'mount_umntall_1_svc': mountd.c:251: warning: unused parameter 'argp' mountd.c:251: warning: unused parameter 'resp' mountd.c: In function 'mount_export_1_svc': mountd.c:261: warning: unused parameter 'argp' mountd.c: In function 'mount_exportall_1_svc': mountd.c:272: warning: unused parameter 'argp' Signed-off-by: Steve Dickson commit 14e6ec262e58e962c2d7e9161ca9c56529de3170 Author: Steve Dickson Date: Wed Aug 4 10:41:18 2010 -0400 Removed warnings from idmapd.c idmapd.c:120: warning: missing initializer idmapd.c:120: warning: (near initialization for 'nfsd_ic[0].ic_event') idmapd.c:121: warning: missing initializer idmapd.c:121: warning: (near initialization for 'nfsd_ic[1].ic_event') idmapd.c: In function 'flush_nfsd_cache': idmapd.c:173: warning: comparison between signed and unsigned integer expressions idmapd.c: In function 'dirscancb': idmapd.c:384: warning: unused parameter 'fd' idmapd.c:384: warning: unused parameter 'which' idmapd.c: In function 'svrreopen': idmapd.c:468: warning: unused parameter 'fd' idmapd.c:468: warning: unused parameter 'which' idmapd.c:468: warning: unused parameter 'data' idmapd.c: In function 'clntscancb': idmapd.c:474: warning: unused parameter 'fd' idmapd.c:474: warning: unused parameter 'which' idmapd.c: In function 'nfsdcb': idmapd.c:488: warning: unused parameter 'fd' idmapd.c: In function 'nfscb': idmapd.c:663: warning: unused parameter 'fd' idmapd.c: In function 'validateascii': idmapd.c:850: warning: comparison between signed and unsigned integer expressions idmapd.c:858: warning: comparison between signed and unsigned integer expressions idmapd.c: In function 'getfield': idmapd.c:916: warning: comparison between signed and unsigned integer expressions Signed-off-by: Steve Dickson commit 2ccfd2d5f390bcac7a44f8887cd3f15df1966e0f Author: Steve Dickson Date: Wed Aug 4 10:29:28 2010 -0400 Removed warnings from configfile.c 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 commit bc8fdd5ebcabe57cacd382673ca9e4a79ff7b18e Author: Steve Dickson Date: Wed Aug 4 10:26:13 2010 -0400 Removed warnings from svcgssd_proc.c svcgssd_proc.c: In function 'send_response': svcgssd_proc.c:135: warning: unused parameter 'f' svcgssd_proc.c: In function 'handle_nullreq': svcgssd_proc.c:434: warning: comparison of unsigned expression < 0 is always false Signed-off-by: Steve Dickson commit be5b2ed57b0e0a3da91f4ec785718302d0351199 Author: Steve Dickson Date: Wed Aug 4 10:22:13 2010 -0400 Removed warnings from network.c network.c: In function 'nfs_verify_family': network.c:1366: warning: unused parameter 'family' Signed-off-by: Steve Dickson commit 6b8d7c05fe738a4c7295754b4be552c703024f58 Author: Steve Dickson Date: Tue Jul 20 18:43:46 2010 -0400 Removed warnings from nfs4mount.c nfs4mount.c: In function 'fill_ipv4_sockaddr': nfs4mount.c:149: warning: comparison between signed and unsigned integer expressions Signed-off-by: Steve Dickson commit cf2fd4869fdb77741bca9e3f713af49b889661b3 Author: Steve Dickson Date: Tue Jul 20 18:40:31 2010 -0400 Removed warnings from nfsmount.c 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 commit 45a73911fff657942ec67317d000badb8e2c5282 Author: Steve Dickson Date: Tue Jul 20 18:22:32 2010 -0400 Removed warnings from svcgssd.c svcgssd.c: In function 'sig_hup': svcgssd.c:160: warning: unused parameter 'signal' Signed-off-by: Steve Dickson commit b8ba21cedc6aac3b2847217caf55885bb1a74805 Author: Steve Dickson Date: Tue Jul 20 18:13:45 2010 -0400 Removed warnings from gssd_proc.c gssd_proc.c: In function 'create_auth_rpc_client': gssd_proc.c:939: warning: comparison between signed and unsigned integer expressions gssd_proc.c:939: warning: comparison between signed and unsigned integer expressions gssd_proc.c: In function 'handle_krb5_upcall': gssd_proc.c:1164: warning: comparison between signed and unsigned integer expressions gssd_proc.c: In function 'handle_spkm3_upcall': gssd_proc.c:1178: warning: comparison between signed and unsigned integer expressions Signed-off-by: Steve Dickson commit f4321ac3466aa9d4c4e11ba232f1ff9bea561288 Author: Steve Dickson Date: Tue Jul 20 18:08:13 2010 -0400 Removed warnings from krb5_util.c krb5_util.c: In function 'realm_and_service_match': krb5_util.c:617: warning: unused parameter 'context' krb5_util.c: In function 'limit_krb5_enctypes': krb5_util.c:1275: warning: unused parameter 'uid' Signed-off-by: Steve Dickson commit f89b109c04a8eab81bfa8b8fcdc7692673e13e49 Author: Steve Dickson Date: Tue Jul 20 17:53:47 2010 -0400 Removed warnings from gssd_main_loop.c gssd_main_loop.c: In function 'dir_notify_handler': gssd_main_loop.c:64: warning: unused parameter 'sig' gssd_main_loop.c:64: warning: unused parameter 'si' gssd_main_loop.c:64: warning: unused parameter 'data' Signed-off-by: Steve Dickson commit d2c329ba4b7ccdea76bcc857a73206eab68428f8 Author: Steve Dickson Date: Tue Jul 20 17:45:17 2010 -0400 Removed warnings from gssd.c gssd.c: In function 'sig_hup': gssd.c:78: warning: unused parameter 'signal' Signed-off-by: Steve Dickson commit 8a72ac3280ce8f9d0f48383d47dd06c80567bc09 Author: Steve Dickson Date: Tue Jul 20 17:19:20 2010 -0400 Removed warnings from atomicio.c atomicio.c: In function 'atomicio': atomicio.c:48: warning: comparison between signed and unsigned integer expressions Signed-off-by: Steve Dickson commit 14becdb7bc23f075f786325f7e953c2f928fe385 Author: Steve Dickson Date: Mon Jul 19 14:54:51 2010 -0400 Removed warnings from nfsstat.c nfsstat.c: In function 'print_callstats': nfsstat.c:797: warning: comparison between signed and unsigned integer expressions nfsstat.c:801: warning: comparison between signed and unsigned integer expressions nfsstat.c:802: warning: comparison between signed and unsigned integer expressions nfsstat.c:805: warning: comparison between signed and unsigned integer expressions nfsstat.c: In function 'print_callstats_list': nfsstat.c:821: warning: comparison between signed and unsigned integer expressions nfsstat.c:828: warning: comparison between signed and unsigned integer expressions nfsstat.c: In function 'unpause': nfsstat.c:1111: warning: unused parameter 'sig' Signed-off-by: Steve Dickson commit b594ee2b2a1b9c0c5823a7af279488f113f91be4 Author: Steve Dickson Date: Mon Jul 19 14:48:37 2010 -0400 Removed warnings from nfssvc.c nfssvc.c:184: warning: comparison between signed and unsigned integer expressions nfssvc.c: In function 'nfssvc_setvers': nfssvc.c:254: warning: comparison between signed and unsigned integer expressions nfssvc.c: In function 'nfssvc_threads': nfssvc.c:280: warning: comparison between signed and unsigned integer expressions Signed-off-by: Steve Dickson commit 7b331fb9d24a71242a6c0a45a06c49174b552c64 Author: Steve Dickson Date: Mon Jul 19 14:43:26 2010 -0400 Removed warnings from cache.c cache.c:812: warning: missing initializer cache.c:812: warning: (near initialization for 'cachelist[0].f') cache.c:813: warning: missing initializer cache.c:813: warning: (near initialization for 'cachelist[1].f') cache.c:814: warning: missing initializer cache.c:814: warning: (near initialization for 'cachelist[2].f') cache.c:815: warning: missing initializer cache.c:815: warning: (near initialization for 'cachelist[3].f') cache.c:816: warning: missing initializer cache.c:816: warning: (near initialization for 'cachelist[4].f') cache.c: In function 'cache_export_ent': cache.c:887: warning: comparison between signed and unsigned integer expressions cache.c:907: warning: comparison between signed and unsigned integer expressions Signed-off-by: Steve Dickson commit 9d5eaa2e939723c47649f0f112b43cc8ff414740 Author: Steve Dickson Date: Mon Jul 19 13:07:00 2010 -0400 Removed warnings from fsloc.c fsloc.c: In function 'replicas_lookup': fsloc.c:149: warning: unused parameter 'key' Signed-off-by: Steve Dickson commit e10000740fc4c323dbc8d501d7c0caeae12c19b5 Author: Steve Dickson Date: Mon Jul 19 12:39:52 2010 -0400 Removed warnings from conffile.c conffile.c: In function 'conf_parse_line': conffile.c:301: warning: comparison between signed and unsigned integer expressions conffile.c: In function 'conf_load_defaults': conffile.c:356: warning: unused parameter 'tr' Signed-off-by: Steve Dickson commit 8810c9dd5b66a097a235e6eabd399739a44df63e Author: Steve Dickson Date: Mon Jul 19 12:34:14 2010 -0400 Remove warnings from nfs_mntent.c nfs_mntent.c: In function 'mangle': nfs_mntent.c:36: warning: comparison between signed and unsigned integer expressions Signed-off-by: Steve Dickson commit 1ca569633e14c844e32d8e5e3a1c54be01a8b633 Author: Steve Dickson Date: Mon Jul 19 12:31:48 2010 -0400 emove warnings from cacheio.c cacheio.c: In function 'cache_flush': cacheio.c:352: warning: comparison between signed and unsigned integer expressions Signed-off-by: Steve Dickson commit 0cdfd35cecc17eb1927f15d33205e43ec66675f2 Author: Steve Dickson Date: Mon Jul 19 12:28:09 2010 -0400 Remove warnings from svc_socket.c svc_socket.c: In function 'svcudp_socket': svc_socket.c:160: warning: unused parameter 'reuse' Signed-off-by: Steve Dickson commit 9c99b4633b185452614eb6c5630a30b30626a838 Author: Steve Dickson Date: Mon Jul 19 12:17:24 2010 -0400 Removed warnings from rpcdispatch.c rpcdispatch.c: In function 'rpc_dispatch': rpcdispatch.c:30: warning: comparison between signed and unsigned integer expressions rpcdispatch.c:35: warning: comparison between signed and unsigned integer expressions Signed-off-by: Steve Dickson commit b6e0ddd7bb3843bb8bb5ff56816b31bcf17adacd Author: Steve Dickson Date: Mon Jul 19 12:05:51 2010 -0400 Enable extra compile warnings (-Wextra) by default. Added -Wextra to the CFLAGS which enables more checking during compilation, which in turn, will hopefully flag potential problems before they occur. Signed-off-by: Steve Dickson commit 12af21aca517dfbaec465447d8336bcc4769f71d Author: Doug Nazar Date: Mon Jul 19 11:08:46 2010 -0400 gssd: picking wrong creds When not using machine credentials for root, if the machine credential cache file is newer than the root credential file the wrong file will get picked. Ignore the machine file in this case. Signed-off-by: Steve Dickson commit e2aa2c8c4cc21eb312a301855c2e211dedf93146 Author: Doug Nazar Date: Mon Jul 19 10:58:47 2010 -0400 mountd: Fix memcmp result comparison error for uuid match. Fixed Small typo in the new fs uuid comparison code Signed-off-by: Steve Dickson commit eafc5a8873b09482c71313f425080cce2031010a Author: Doug Nazar Date: Mon Jul 19 10:48:34 2010 -0400 gssd: Fix endtime issue Commit 4c5ff6d4 removed the setting of endtime for a few contexts by accident. Now to figure out why I get stale handles on submounts. Signed-off-by: Steve Dickson commit 0bd7e91cea26bcfc5581290e4cdd87870da29b9e Author: Chuck Lever Date: Mon Jul 19 10:09:12 2010 -0400 nfs-utils: Fix C aliasing rules violation in nfs_getrpccaller() Squelch compiler warnings reported with -Wextra: In file included from statd.c:24: ../../support/include/rpcmisc.h: In function nfs_getrpccaller_in: ../../support/include/rpcmisc.h:58: warning: dereferencing type-punned pointer might break strict-aliasing rules ../../support/include/rpcmisc.h: In function nfs_getrpccaller: ../../support/include/rpcmisc.h:63: warning: dereferencing type-punned pointer might break strict-aliasing rules Signed-off-by: Chuck Lever Signed-off-by: Steve Dickson commit a8715bec8bd671135f20fc0422d2a9fc0993758a Author: Kevin Constantine Date: Tue Jun 22 17:43:19 2010 -0400 nfs-iostat.py: divide by zero with fresh mount When an export is freshly mounted, /proc/self/mountstats displays age = 0. This causes nfs-iostat.py to divide by zero throwing an error. When we have age = 0, other stats are greater than 0, so we'll set age = 1 and print the relevant stats. Signed-off-by: Kevin Constantine Signed-off-by: Steve Dickson commit 9c3f7a220b4812c5d560db5fcacad790fc8b17af Author: Chuck Lever Date: Tue Jun 22 13:31:38 2010 -0400 libexport.a: Remove unused hostent-based DNS helper functions Clean up: Get rid of hostent-based DNS helper functions in libexport.a that have been replaced by addrinfo-based DNS helpers. None of the original code remains, so replace the copyright notice as well. Signed-off-by: Chuck Lever Signed-off-by: Steve Dickson commit 21015ace7d0a356b24a57540ccfeb41d941e78ed Author: Chuck Lever Date: Tue Jun 22 13:06:40 2010 -0400 libexport.a: Replace matchhostname() So that exportfs can eventually support IPv6 addresses, copy statd's getaddrinfo(3)-based matchhostname to exportfs, with adjustments for dealing with export wildcards and netgroups. Until exportfs has full IPv6 support, however, we want to ensure that IPv6 addresses continue to remain blocked in the address comparison code used by exportfs. At a later point we'll replace much of this with the generic functions in sockaddr.h. Since it contains special logic for handling wildcard and netgroups, this function is specialized for exportfs, and does not belong in one of the shared libraries. Signed-off-by: Chuck Lever Signed-off-by: Steve Dickson commit 22d6566d473f71e241c791a02435d414648c99e8 Author: Chuck Lever Date: Tue Jun 22 12:51:42 2010 -0400 libexport.a: Add documenting comments Clean up. Add a few additional documenting comments for globally visible functions. Signed-off-by: Chuck Lever Signed-off-by: Steve Dickson commit 53928c0166dcc0acceaa995edb8551b48968b5dd Author: Chuck Lever Date: Tue Jun 22 12:44:44 2010 -0400 libexport.a: Make export_add() static Clean up: export_add() is not called from outside of export.c, so make it a static helper. Signed-off-by: Chuck Lever Signed-off-by: Steve Dickson commit 8940675a20967145b37a596334c25a54804435cc Author: Chuck Lever Date: Tue Jun 22 12:43:55 2010 -0400 libexport.a: Make export_read() return void Clean up: export_read()'s return value is always zero, and its only caller never checks it. Signed-off-by: Chuck Lever Signed-off-by: Steve Dickson commit 0509d3428f523776ddd9d6e9fa318587d3ec7d84 Author: Chuck Lever Date: Tue Jun 22 12:43:01 2010 -0400 mountd: Replace "struct hostent" with "struct addrinfo" struct hostent can store either IPv4 or IPv6 addresses, but it can't store both address families concurrently for the same host. Neither can hostent deal with parts of socket addresses that are outside of the sin{,6}_addr field. Replace the use of "struct hostent" everywhere in libexport.a, mountd, and exportfs with "struct addrinfo". This is a large change, but there are so many strong dependencies on struct hostent that this can't easily be broken into smaller pieces. One benefit of this change is that hostent_dup() is no longer required, since the results of getaddrinfo(3) are already dynamically allocated. Signed-off-by: Chuck Lever Signed-off-by: Steve Dickson commit 3ca5879be32c4c11750e12230ff588195fff0738 Author: Chuck Lever Date: Tue Jun 22 12:40:27 2010 -0400 exportfs: Add a common exit label in exportfs() Clean up: Reduce code duplication by introducing a goto label for freeing hp and exiting. This will make replacing "struct hostent *" with "struct addrinfo *" more straightforward in this code. Signed-off-by: Chuck Lever Signed-off-by: Steve Dickson commit 94ce1eb94babb4c587b2826452fb053cba745098 Author: Chuck Lever Date: Tue Jun 22 10:41:03 2010 -0400 libexport.a: Add helpers to manage DNS lookups Introduce DNS query helpers based on getaddrinfo(3) and getnameinfo(3). These will eventually replace the existing hostent-based functions in support/export/hostname.c. Put some of these new helpers to immediate use, where convenient. As they are part of libexport.a, I've added the forward declarations for these new functions in exportfs.h rather than misc.h, where the hostent-based forward declarations are currently. Signed-off-by: Chuck Lever Signed-off-by: Steve Dickson commit 8d61f2518bebe11c5fd0624857f83de1dceca991 Author: NeilBrown Date: Tue Jun 22 10:37:25 2010 -0400 Improve support for exporting btrfs subvolumes If you export two subvolumes of a btrfs filesystem, they will both be given the same uuid so lookups will be confused. blkid cannot differentiate the two, so we must use the fsid from statfs64 to identify the filesystem. We cannot tell if blkid or statfs is best without knowing internal details of the filesystem in question, so we need to encode specific knowledge of btrfs in mountd. This is unfortunate. To ensure smooth handling of this and possible future changes in uuid generation, we add infrastructure for multiple different uuids to be recognised on old filehandles, but only the preferred on is used on new filehandles. Signed-off-by: NeilBrown Signed-off-by: Steve Dickson commit 9ac7a15017b876d4d8d3a4502ebaf954f36f7f54 Author: Steve Dickson Date: Thu Jun 3 08:53:22 2010 -0400 mount.nfs: silently fails when the network protocol is not found mount.nfs should display some type of error diagnostics when the network protocol can not be determined. Signed-off-by: Steve Dickson commit 740171dea45a57e396a86fbda1579a465f101854 Author: Steve Dickson Date: Thu Jun 3 08:32:56 2010 -0400 mount: silently fails when bad option values are given 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 commit 94c3d7c91de582cf29ff9100950ecd4a5fd1606b Author: Kevin Constantine Date: Wed Jun 2 08:34:14 2010 -0400 nfsiostat.man: Add linebreak before --version option The nfsiostat man file was missing a linebreak before the --verbose option Signed-off-by: Kevin Constantine Signed-off-by: Steve Dickson commit 291b329ad1f5a65270097f4ec3a8dd465df42669 Author: Chuck Lever Date: Mon May 24 06:02:22 2010 -0400 mountd: Convert colons in IPv6 presentation addresses tosemicolons The /var/lib/nfs/rmtab file delineates fields in each of its lines with a ":". The first field contains the IP address of a client, in presentation format. IPv6 presentation format addresses contain colons, which screws up the field delineation of rmtab. Use a simple simple scheme to convert the colons in incoming client names to some other character, and then convert them back when the rmtab file is read. Signed-off-by: Chuck Lever Signed-off-by: Steve Dickson commit 9e398e49be79af62fca8efb21849d8a2714dc92a Author: Chuck Lever Date: Mon May 24 06:01:22 2010 -0400 libexport.a: Refactor rmtab_read() Clean up: Make it easier to add IPv6 support by refactoring part of rmtab_read() into a helper function. Signed-off-by: Chuck Lever Signed-off-by: Steve Dickson commit 2fd2dfd9ebb2de145d50039233bd2a53b7f03062 Author: NeilBrown Date: Mon May 24 05:55:26 2010 -0400 Mountd listens on 2 different versions for NFSv2 (MOUNTv1 and MOUNTv2) and one for NFSv3 (MOUNTv3) When --no-nfs-version requests an NFS version to be disabled, the code actually disabled the MOUNT version. This works is several cases, but requires --no-nfs-version 1 to completely disable NFSv2, which is wrong. So if we do disable 1, 2, and 3. mountd complain and won't run, it is not possible to run just v4 - i.e. not listening for MOUNT requests at all (as v4 doesn't need them). So change the handling of "--no-nfs-version 2" it disable MOUNTv1 as well as MOUNTv2, and allow mountd to continue running as long as one of NFSv2 NFSv3 NFSv4 is enabled. Signed-off-by: NeilBrown Signed-off-by: Steve Dickson commit 6299a310d77e6495efdf7c50491f0b055fee2cfe Author: Chuck Lever Date: Wed May 5 15:41:07 2010 -0400 mountd/exportfs: Make m_addrlist field a nfs_sockaddr To store non-AF_INET addresses in the nfs_client structure, we need to use more than in_addr for the m_addrlist field. Make m_addrlist larger, then add a few helper functions to handle type casting and array indexing cleanly. We could treat the nfs_client address list as if all the addresses in the list were the same family. This might work for MCL_SUBNETWORK type nfs_clients. However, during the transition to IPv6, most hosts will have at least one IPv4 and one IPv6 address. For MCL_FQDN, I think we need to have the ability to store addresses from both families in one nfs_client. Additionally, IPv6 scope IDs are not part of struct sin6_addr. To support link-local IPv6 addresses and the like, a scope ID must be stored. Thus, each slot in the address list needs to be capable of storing an entire socket address, and not simply the network address part. Signed-off-by: Chuck Lever Signed-off-by: Steve Dickson commit 6ff1fd42db18c657fbc5f81169a566b41d53e731 Author: Chuck Lever Date: Wed May 5 14:42:01 2010 -0400 libexport.a: Clean up client_add() Clean up: client_add()'s current callers never set unknown m_type values, so the m_type check is unnecessary. All of client_add()'s callers are in the same source file where it is defined, so make it a static helper function. Signed-off-by: Chuck Lever Signed-off-by: Steve Dickson commit 9bb85c5e8d2285f82367c75df5530a71a9a5a5f2 Author: Chuck Lever Date: Wed May 5 14:37:13 2010 -0400 libexport.a: Refactor client_init() Clean up: Move subnet hostname parsing logic out of client_init() to make it simpler to introduce IPv6 support. Make client_init() a helper, since it's already static. Signed-off-by: Chuck Lever Signed-off-by: Steve Dickson commit 0a8bd742cc1412e2553f152ee0c3aab8c5570212 Author: Mike Frysinger Date: Fri Apr 23 12:22:53 2010 -0400 Make capabilities support optional The new code using libcap is quite minor, so rather than always reqiure libcap support, make it a normal --enable type flag. Current default behavior is retained -- if libcap is found, it is enabled, else it is disabled like every nfs-utils version in the past. Signed-off-by: Mike Frysinger Signed-off-by: Steve Dickson commit fbc038b7a5c7f5f102bf2c4fb149030d0092eec8 Author: Mike Frysinger Date: Fri Apr 23 12:18:27 2010 -0400 set +x on autogen.sh Signed-off-by: Steve Dickson commit 08e1512e4a932f41867f0b515348b9402db50cbd Author: Chuck Lever Date: Fri Apr 23 12:09:35 2010 -0400 libexport.a: Allow malloc(3) failures in client_lookup() and friends Clean up: Use malloc(3) instead of xmalloc() in client_lookup() and client_dup(), ensuring that a failed memory allocation here doesn't cause our process to exit suddenly. Allocation of nfs_client records and the m_hostname string are now consistently handled with malloc(3), calloc(3), strdup(3), and free(3). Signed-off-by: Chuck Lever Signed-off-by: Steve Dickson commit aa4b66b12b631885ed85f3ebe97e68b033407178 Author: Chuck Lever Date: Fri Apr 23 12:08:49 2010 -0400 libexport.a: Allow m_hostname allocation to fail instead of exit Clean up: Replace xstrdup() with strdup(3) in client_init(), to prevent the process from exiting if the memory allocation fails. Note that both of client_init()'s callers set m_hostname equal to NULL before calling, thus the extra free(3) at the top of client_init() is unneeded. Signed-off-by: Chuck Lever Signed-off-by: Steve Dickson commit 5d954d871fb265af584faef5df6e2e7e6ada7c3b Author: Chuck Lever Date: Fri Apr 23 12:02:34 2010 -0400 libexport.a: Allow client_init() to fail instead of exit client_init()'s current callers can now deal correctly with a failure. Get rid of code that can cause our process to exit in client_init(), if address mask parsing or memory allocation fails. Signed-off-by: Chuck Lever Signed-off-by: Steve Dickson commit 75cbc8d3fc9e7c3750629bd72519770ab58b868f Author: Chuck Lever Date: Fri Apr 23 12:00:28 2010 -0400 libexport.a: Add client_free() Clean up: Introduce a helper to free a nfs_client record. Signed-off-by: Chuck Lever Signed-off-by: Steve Dickson commit 7fc6f6c6b68ba7fa1be6de05ce3b9e2d97b82ea4 Author: Steve Dickson Date: Fri Apr 16 10:56:29 2010 -0400 Add in autoconf support for mountstats and nfsiostats Signed-off-by: Steve Dickson commit d8ff9ef2828059bb2ee115d22f3c9579421daf54 Author: Steve Dickson Date: Fri Apr 16 10:49:10 2010 -0400 Introduce man page for the nfsiostats command Signed-off-by: Steve Dickson commit c03fe46d62bc78cb52d400fa5a52dc4ce9947945 Author: Steve Dickson Date: Fri Apr 16 10:46:41 2010 -0400 Introduce man page for the mountstats command Signed-off-by: Steve Dickson commit c4b2281c6c748b768de7a49af89660c9c1a68b11 Author: Steve Dickson Date: Fri Apr 16 13:31:57 2010 -0400 Removed some miscellaneous warnings in the new gssd code. Signed-off-by: Steve Dickson commit 4c5ff6d48021731128c4fc13d51610645a6fcf5c Author: Kevin Coffman Date: Mon Apr 12 17:13:25 2010 -0400 Add support for non-DES encryption types. Sends a new format of context information to the kernel. (Requires kernel support to do anything useful.) Signed-off-by: Steve Dickson commit 76be349d5dd07f55797cb9920cc275667258f10f Author: Kevin Coffman Date: Thu Apr 15 08:32:20 2010 -0400 Try to use kernel function to determine supported Kerberos enctypes. This patch replaces a hard-coded list with a function to obtain the Kerberos encryption types that the kernel's rpcsec_gss code can support. Defaults to old behavior if kernel does not supply information. Signed-off-by: Steve Dickson commit 48d13033dcb27eb3d9ea78c39692ff7c54095950 Author: Kevin Coffman Date: Mon Apr 12 17:06:30 2010 -0400 gssd: move function limit_krb5_enctypes into the exported functions area cleanup: Move function limit_krb5_enctypes() from the section containing static functions into the section containing externally visible functions. Signed-off-by: Steve Dickson commit 470448e77bd673b206cf40820f966dcb8f029f27 Author: Chuck Lever Date: Fri Apr 16 13:03:20 2010 -0400 libexport.a: export_find() should handle address parsing errors An address mask parsing error can cause client_init(), and therefore client_dup(), to make our process exit suddenly. Soon we want to add more complex address parsing in client_init(), so we need this interface to be a little more robust. Since export_find() can return NULL in some cases, it can handle NULL returns from its subroutines if an address parsing error occurs, or if memory is exhausted. Allow for client_dup() to return NULL instead of exiting sideways. Signed-off-by: Chuck Lever Signed-off-by: Steve Dickson commit 9b7cc679c70d00af3f44dc6a8b44a360a2423d64 Author: Chuck Lever Date: Fri Apr 16 13:02:15 2010 -0400 libexport.a: Add export_free() Clean up: Introduce a helper to free an nfs_export record. Signed-off-by: Chuck Lever Signed-off-by: Steve Dickson commit 30eff9c26141746fb26efb1af60d5cbe7a16ebae Author: Chuck Lever Date: Thu Apr 15 08:59:18 2010 -0400 libexport.a: Add helper for populating m_addrlist[] Clean up: Move common code that populates an nfs_client record's m_addrlist to a helper function. This eliminates a little code duplication, and makes it simpler to add IPv6 support later. Signed-off-by: Chuck Lever Signed-off-by: Steve Dickson commit e1c93f691348392ee36b763bf57946540891ff16 Author: Chuck Lever Date: Thu Apr 15 08:57:29 2010 -0400 libexport.a: Reduce code duplication in client_init() Clean up: Most cases in client_init() set clp->m_naddr to zero. Move it to the common part of the function, and simplify the logic. This will make adding IPv6 support here more straightforward. Signed-off-by: Chuck Lever Signed-off-by: Steve Dickson commit 1fc99e6d5d6b9401e380ee756a4251c86a3b8d54 Author: Mike Frysinger Date: Thu Apr 15 08:49:28 2010 -0400 set +x on t0001-statd-basic-mon-unmon.sh The test framework tries to exec this script, but it fails because it lacks the +x bit. Signed-off-by: Mike Frysinger Signed-off-by: Steve Dickson commit bf867b09201abb155b52e81aeb08757b2f7c6937 Author: Chuck Lever Date: Thu Apr 8 11:01:14 2010 -0400 libexport.a: replace xlog(L_FATAL) in client_check() Clean up: Prevent the process from exiting in client_check(). Report bad m_type values, but return 0. This removes another site where a mountd or exportfs process can exit sideways. Signed-off-by: Chuck Lever Signed-off-by: Steve Dickson commit a39b43b81a8e7b70310f250c5ffd77816577cd6c Author: Chuck Lever Date: Thu Apr 8 10:55:02 2010 -0400 libexport.a: Refactor wildcard checking in client_check() Clean up: refactor wildcard logic out of client_check() to make it easier to introduce IPv6 support. Match the style used for client_check_{fqdn,subnetwork,netgroup}. Signed-off-by: Chuck Lever Signed-off-by: Steve Dickson commit 346ca35298e45e55a58d0f566c3b32b69102c6de Author: Chuck Lever Date: Thu Apr 8 10:54:01 2010 -0400 libexport.a: Refactor netgroup checking in client_check() Clean up: refactor netgroup logic out of client_check() to make it easier to introduce IPv6 support. + Use preferred style of keeping #ifdef out of the middle of function definitions. Squelch compiler warnings for "#ifndef HAVE_INNETGR" by using __attribute__((unused)). + Use preferred style of not using curly braces around switch cases. + Match style used for check_{fqdn,subnetwork}. + Clarify comment documenting use of h_aliases Signed-off-by: Chuck Lever Signed-off-by: Steve Dickson commit 3455138100064d0213b124c72453accde2276be5 Author: Chuck Lever Date: Thu Apr 8 10:52:33 2010 -0400 libexport.a: Remove unused function client_checkaddr() Clean up. Signed-off-by: Chuck Lever Signed-off-by: Steve Dickson commit a4e3d5c53195c789ae26697a0b2ecdf05d76a85b Author: Chuck Lever Date: Thu Apr 8 10:51:54 2010 -0400 libexport.a: Factor SUBNETWORK checking out of check_client() Clean up: Factor the MCL_SUBNETWORK case out of check_client() and client_checkaddr(). This will make it easier to add IPv6 support eventually. The logic in the new helper function will get a little more tangled once IPv6 support is introduced. Each slot in the clp address list eventually may contain an address from either address family. Note that the switch statement in client_checkaddr() is redundant, since clp->cl_mtype is loop invariant. This change makes SUBNETWORK client checking more computationally efficient, at the cost of a few extra lines of code. This commit should not change code behavior in any way. Signed-off-by: Chuck Lever Signed-off-by: Steve Dickson commit 6abde64e6a605443dfc283ffb2642cb853f8b5b0 Author: Chuck Lever Date: Thu Apr 8 10:50:41 2010 -0400 libexport.a: Factor FQDN checking out of check_client() Clean up: Factor the MCL_FQDN case out of check_client() and client_checkaddr(). This will make it easier to add IPv6 support eventually. The logic in the new helper function will get a little more tangled once IPv6 support is introduced. Each slot in the clp address list eventually may contain an address from either address family. Note that the switch statement in client_checkaddr() is redundant, since clp->cl_mtype is loop invariant. This change makes FQDN client checking more computationally efficient, at the cost of a few extra lines of code. This commit should not change code behavior in any way. Signed-off-by: Chuck Lever Signed-off-by: Steve Dickson commit e8a54a3d5e32c9de009f84d1ef3f26d2dffbf226 Author: Steve Dickson Date: Thu Apr 8 10:43:49 2010 -0400 Remove some warnings that were introduced by commit 6ca440c Signed-off-by: Steve Dickson commit 132744e9f8885254bcf213c90009d40adeb716bc Author: Chuck Lever Date: Mon Mar 22 10:18:00 2010 -0400 libexport.a: e_fslocdata should be freed with free(3) Clean up: Since e_fslocdata is allocated with strdup(3), and not xstrdup(), it should be freed with free(3), and not xfree(). Signed-off-by: Chuck Lever Signed-off-by: Steve Dickson commit e3b0046b4b12a6e05c0a7afd59ca5431ded51e96 Author: Chuck Lever Date: Mon Mar 22 10:16:04 2010 -0400 libexport.a: Fix whitespace damage in support/export/export.c Clean up whitespace damage introduced by commit 4cacc965. Signed-off-by: Chuck Lever Signed-off-by: Steve Dickson commit 5f722d8855ebcb2d041e182c8c69c8cbee4bf408 Author: Chuck Lever Date: Mon Mar 22 10:13:15 2010 -0400 libexport.a: Clean up client_compose() and client_member() Clean up: Replace outdated comments, and fix some function declarations. Use proper type for a couple of automatic variables. Signed-off-by: Chuck Lever Signed-off-by: Steve Dickson commit aa4c771fc359e097a3a6c3637f78c7bed7c450e9 Author: Chuck Lever Date: Mon Mar 22 10:10:59 2010 -0400 libexport.a: Remove dead code Clean up: I can't find any call sites for client_find() or client_match(). Signed-off-by: Chuck Lever Signed-off-by: Steve Dickson commit 0935cebc1e130c6adfd870c88a6493277c84d47f Author: Chuck Lever Date: Fri Mar 19 16:14:26 2010 -0400 mount: Mount should retry unreachable hosts 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 Signed-off-by: Chuck Lever Signed-off-by: Steve Dickson commit baa41b2c78e796540c45692ea35214f7090a78cb Author: Chuck Lever Date: Fri Mar 19 16:03:45 2010 -0400 sm-notify: Send fully-qualified and unqualified mon_names During any file locking interaction between an NFS client and server, the client tells the server what hostname it will use as the mon_name argument of the SM_NOTIFY request sent by the client when it reboots. This is the "caller_name" argument of an NLMPROC_LOCK request. The server, however, never tells the client what mon_name argument it will use when sending an SM_NOTIFY request. In order to recognize the server, clients usually guess what mon_name the server might send, by using the server hostname provided by the user on the mount command line. Frequently, the user provides an unqualified server name on the mount command. The server might then call the client back with a fully qualified domain name, which might not match in some cases. Solaris, and perhaps other implementations, attempt to mitigate this problem by sending two SM_NOTIFY requests to each peer: one with an unqualified mon_name argument, and one with a fully qualified mon_name. Implement such a scheme for sm-notify. Since my_name is almost always the fully-qualified hostname associated with the local system, just wiping the left-most '.' in the my_name argument and sending another SM_NOTIFY is nearly always sufficient. Signed-off-by: Chuck Lever Signed-off-by: Steve Dickson commit 900df0e7c0b9006d72d8459b30dc2cd69ce495a5 Author: Chuck Lever Date: Wed Mar 17 06:15:08 2010 -0400 sm-notify: Use my_name when sending SM_NOTIFY requests The mon_name argument of an SM_NOTIFY request is a string that identifies the rebooting host. sm-notify should send the my_name provided by the local lockd at the time the remote was monitored, rather than cocking up a mon_name argument based on the present return value of gethostname(3). If the local system's hostname happened to change after the last reboot, then the string returned by gethostname(3) will not be recognized by the remote. Thus the remote will never initiate lock recovery for the original named host, possibly leaving stale locks. The existing behavior of using the -v command line option as the mon_name argument is preserved, but we now prevent sending an IP presentation address, as some non-Linux implementations don't recognize addresses as valid mon_names. Signed-off-by: Chuck Lever Reviewed-by: Jeff Layton Signed-off-by: Steve Dickson commit 70c59e231e7257ac93b68ba4b844f8d10a6af4a8 Author: J. Bruce Fields Date: Mon Mar 8 15:02:26 2010 -0500 mountd: trivial: name parameters for clarity Part of the reason for the previous bug was confusion between "subpath" and "path"; which is the shorter path, and which the longer? "child" and "parent" seem less ambiguous. Signed-off-by: J. Bruce Fields Signed-off-by: Steve Dickson commit a064fde8c2615333227de97d159bb338d4ac640d Author: J. Bruce Fields Date: Mon Mar 8 14:59:01 2010 -0500 mountd: fix path comparison for v4 crossmnt This was obviously wrong, since path[strlen(path)] == '\0' should always be true. Signed-off-by: J. Bruce Fields Signed-off-by: Steve Dickson commit 6ca440c2661dccb05ae74ffb65817e9c30f05c8a Author: Steve Dickson Date: Mon Mar 8 11:22:46 2010 -0500 mountd: fix --manage-gids hang due to int/uint bug A uid or gid should be represented as unsigned, not signed. The conversion to signed here could cause a hang on access by an unknown user to a server running mountd with --manage-gids; such a user is likely to be mapped to 232-1, which may be converted to 231-1 when represented as an int, resulting in a downcall for uid 231-1, hence the original rpc hanging forever waiting for a cache downcall for 232-1. Signed-off-by: J. Bruce Fields Signed-off-by: Steve Dickson commit 84346b7d7e69c113d6dbf03f2646a47b0e74a6b8 Author: Steve Dickson Date: Mon Mar 8 10:24:44 2010 -0500 Use authunix_create() instead of authsys_create() to fix regression. Commit 409b8 introduced a regression when the --disable-tirpc configuration flag is set. The authsys_create() interface, which was introduced, does not exist in the legacy glibc library. Since the authsys_create() interface is a redefined of the authunix_create() interface, which is defined in glibc, using authunix_create() resolves the regression, Acked-by: Jeff Layton Signed-off-by: Steve Dickson commit 409b89cc7106154780400c6b2bdce46bc9d5db4b Author: Jeff Layton Date: Mon Mar 1 08:07:34 2010 -0500 nfs-utils: add and use nfs_authsys_create 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 Signed-off-by: Steve Dickson commit 9c8c2cd50d3cf0316c2a1bdf6cb9efc7e1a20be9 Author: Trond Myklebust Date: Mon Mar 1 07:37:49 2010 -0500 Fix a typo in commit 6d5ac3fa (nfsd: Disble NFS 4.1 functionality by default). We did not really intend to make NFSv4.0 support conditional on NFSv4.1 being enabled. Signed-off-by: Steve Dickson commit 639b63394c6dd66e06423bfe810366277955c570 Author: Steve Dickson Date: Thu Feb 18 07:35:00 2010 -0500 Release 1.2.2 Signed-off-by: Steve Dickson