Old home of linux NFS development; see linux-nfs.org instead now.
Be the first to post a text review of NFS. Rate and review a project by clicking thumbs up or thumbs down in the right column.
commit 6b7ad21f8162ec85766fd1369ea13ab432e287f8 Author: Tom spot Callaway <tcallawa@redhat.com> Date: Tue Jun 2 10:43:05 2009 -0400 Replace the Sun RPC license with the BSD license, with the explicit permission of Sun Microsystems Signed-off-by: Tom "spot" Callaway <tcallawa@redhat.com> Signed-off-by: Steve Dickson <steved@redhat.com> commit 2b8bc77817f45759346593eaedebaacddea05978 Author: Chuck Lever <chuck.lever@oracle.com> Date: Mon May 18 13:29:38 2009 -0400 umount.nfs: Harden umount.nfs error reporting Add additional error reporting to nfs_advise_umount(). These messages can be displayed if the "-v" option is specified with umount.nfs. Normally these messages do not appear. Signed-off-by: Chuck Lever <chuck.lever@oracle.com> Signed-off-by: Steve Dickson <steved@redhat.com> commit 383a026d99624c88c0e802103ef4c4865db8eb71 Author: Chuck Lever <chuck.lever@oracle.com> Date: Mon May 18 13:27:25 2009 -0400 nfs-utils: Fix IPv6 support in support/nfs/rpc_socket.c Use the correct #ifdef variable to enable IPv6 support for privileged RPC clients. Without this fix, unmounting an IPv6 NFSv2/v3 server fails. Introduced by commit 8c94296bc84f3a204f2061c0391a1d2350e4f37e. Signed-off-by: Chuck Lever <chuck.lever@oracle.com> Signed-off-by: Steve Dickson <steved@redhat.com> commit e456ee18bfbe422750dfad36f0afe2583f412538 Author: Robert Schwebel <r.schwebel@pengutronix.de> Date: Mon May 18 11:36:14 2009 -0400 When compiling nfs-utils-1.1.6, I get this error: arm-iwmmx-linux-gnueabi-gcc -DHAVE_CONFIG_H -I. -I../../support/include -isystem /home/rsc/svn/oselas/bsp/OSELAS.BSP-Pengutronix-AllYes-trunk/platform-phyCORE-PXA270.PCM990/sysroot-target/include -isystem /home/rsc/svn/oselas/bsp/OSELAS.BSP-Pengutronix-AllYes-trunk/platform-phyCORE-PXA270.PCM990/sysroot-target/usr/include -D_GNU_SOURCE -Wall -Wstrict-prototypes -pipe -g -O2 -MT sm_inter_svc.o -MD -MP -MF .deps/sm_inter_svc.Tpo -c -o sm_inter_svc.o sm_inter_svc.c sm_inter_svc.c:10:39: error: sys/ttycom.h: No such file or directory Use sys/ioctl.h instead. Signed-off-by: Robert Schwebel <r.schwebel@pengutronix.de> Signed-off-by: Steve Dickson <steved@redhat.com> commit bfa1df2e24b7f8c7fee299049a6ee36e1262dacd Author: Chuck Lever <chuck.lever@oracle.com> Date: Mon May 18 11:17:49 2009 -0400 mount: remove legacy version of nfs_name_to_address() Currently we have two separate copies of nfs_name_to_address() since some older glibc's don't define AI_ADDRCONFIG. This means extra work to build- and run-test both functions when code is changed in this area. It is also the case that gethostbyname(3) is deprecated, and should not be used in new code. Remove the legacy code in favor of always using getaddrinfo(3). We can also get rid of nfs_name_to_address()'s @family argument as well. Note also this addresses a bug in nfsumount.c -- it was calling nfs_name_to_address() with AF_UNSPEC unconditionally, even if the legacy version of nfs_name_to_address(), which doesn't support AF_UNSPEC, was in use. Signed-off-by: Chuck Lever <chuck.lever@oracle.com> Signed-off-by: Steve Dickson <steved@redhat.com> commit 5d253e3e326bfcf0e8a342bca53f1b4db120a7a9 Author: Chuck Lever <chuck.lever@oracle.com> Date: Mon May 18 11:08:53 2009 -0400 sm-notify: Failed DNS lookups should be retried Currently, if getaddrinfo(3) fails when trying to resolve a hostname, sm-notify gives up immediately on that host. If sm-notify is started before network service is available on a system, that means it quits without notifying anyone. Or, if DNS service isn't available due to a network partition or because the DNS server crashed, sm-notify will simply remove all of its callback files and exit. Really, sm-notify should try harder. We know that the hostnames passed in to notify_host() have already been vetted by statd, which won't monitor a hostname that it can't resolve. So it's likely that any DNS failure we meet here is a temporary condition. If it isn't, then sm-notify will stop trying to notify that host in 15 minutes anyway. [ The host's file is left in /var/lib/nfs/sm.bak in this case, but sm.bak is not read again until the next time sm-notify runs. ] sm-notify already has retry logic for handling RPC timeouts. We can co-opt that to drive DNS resolution retries. We also add AI_ADDRCONFIG because on systems whose network startup is handled by NetworkManager, there appears to be a bug that causes processes that started calling getaddinfo(3) before the network came up to continue getting EAI_AGAIN even after the network is fully operating. As I understand it, legacy glibc (before AI_ADDRCONFIG was exposed in headers) sets AI_ADDRCONFIG by default, although I haven't checked this. In any event, pre-glibc-2.2 systems probably won't run NetworkManager anyway, so this may not be much of a problem for them. Signed-off-by: Chuck Lever <chuck.lever@oracle.com> Signed-off-by: Steve Dickson <steved@redhat.com> commit 3ab7ab5db0f825fdd95d017cdd6d6ee5d207dbe8 Author: Chuck Lever <chuck.lever@oracle.com> Date: Mon May 18 11:03:54 2009 -0400 sm-notify: Don't orphan addrinfo structs sm-notify orphans an addrinfo struct in its address list rotation logic if only a single result was returned from getaddrinfo(3). For each host, the first time through notify_host(), we want to send a PMAP_GETPORT request. ->ai is NULL, and retries is set to 100, forcing a DNS lookup and an address rotation. If only a single addrinfo struct is returned, the rotation logic causes a NULL to be planted in ->ai, copied from the ai_next field of the returned result. This means that the second time through notify_host() (to perform the actual SM_NOTIFY call) we do a second DNS lookup, since ->ai is NULL. The result of the first lookup has been orphaned, and extra network traffic is generated. This scenario is actually fairly common. Since we pass .ai_protocol = IPPROTO_UDP, to getaddrinfo(3), for most hosts, which have a single forward and reverse pointer in the DNS database, we get back a single addrinfo struct as a result. To address this problem, only perform the address list rotation if there is more than one element on the list returned by getaddrinfo(3). Signed-off-by: Chuck Lever <chuck.lever@oracle.com> Signed-off-by: Steve Dickson <steved@redhat.com> commit c88c4091db87c0fc23ed67e76d63439b59a82369 Author: Benny Halevy <bhalevy@panasas.com> Date: Mon May 18 10:50:11 2009 -0400 utils/nfsd: enable nfs minorvers4 by default Enable support for the maximum minor version (4.1 at the moment) by default. It can be disabled using the -N command line option. Signed-off-by: Benny Halevy <bhalevy@panasas.com> Signed-off-by: Steve Dickson <steved@redhat.com> commit 7bd86b3cfb0d929ce1dae2b937c3ac9048e23644 Author: Benny Halevy <bhalevy@panasas.com> Date: Mon May 18 10:47:51 2009 -0400 Extend -N command line option syntax to accept <version>.<minorversion> to disable support for <minorversion>. Only 4.1 is currently supported. Signed-off-by: Benny Halevy <bhalevy@panasas.com> Signed-off-by: Steve Dickson <steved@redhat.com> commit b750909f50fb184cb82344d40a150f0d2760ef21 Author: Benny Halevy <bhalevy@panasas.com> Date: Mon May 4 11:44:49 2009 -0400 utils/nfsd: add support for minorvers4 minorvers4 can be used to either enable or disable nfsv4.x. If minorvers4 is a positive integer n, in the allowed range (only minorversion 1 is supported for now), the string "+4.n" is appended to the versions string written onto /proc/fs/nfsd/versions. Correspondingly, if minorver4 is a negative integer -n, the string "-4.n" is written. With the default value, minorvers4==0, the minor version setting is not changed. Note that unlike the protocol versions 2, 3, or 4. The minor version setting controls the *maximum* minor version nfsd supports. Particular minor version cannot be controlled on their own. With only minor version 1 supported at the moment the difference doesn't matter, but for future minor versions greater than 1, enabling minor version X will enable support for all minor versions 1 through X. Disabling minor version X will disable support for minor versions X and up, enabling 1 through X-1. Signed-off-by: Benny Halevy <bhalevy@panasas.com> Signed-off-by: Steve Dickson <steved@redhat.com> commit 6a72b8af3abaf3792702c834bab5a5049818f9c6 Author: Steve Dickson <steved@redhat.com> Date: Wed Apr 29 12:38:02 2009 -0400 Host aliases need to be checked when netgroups is used in exports. Signed-off-by: Steve Dickson <steved@redhat.com>
commit c062f45deebc20dae5eb8cdb50fb03fb1c252b47 Author: Chuck Lever <chuck.lever@oracle.com> Date: Sat Apr 18 09:45:46 2009 -0400 umount.nfs: Fix return value of nfs_mount_protocol() Fix a copy-paste error introduced in nfs_mount_protocol(). It should return an IPPROTO_ number, not an NFS version number. Signed-off-by: Chuck Lever <chuck.lever@oracle.com> Signed-off-by: Steve Dickson <steved@redhat.com> commit 879a9b1b2bdd1160571896023d06291a611c4315 Author: Chuck Lever <chuck.lever@oracle.com> Date: Sat Apr 18 09:44:56 2009 -0400 umount.nfs: Use a privileged port when sending UMNTrequests Turns out we do actually need to use a privileged port for UMNT. The Linux rpc.mountd complains if an ephemeral source port is used: Apr 17 15:52:19 ingres mountd[2061]: refused unmount request from 192.168.0.59 for /export (/export): illegal port 60932 Signed-off-by: Chuck Lever <chuck.lever@oracle.com> Signed-off-by: Steve Dickson <steved@redhat.com> commit 8c94296bc84f3a204f2061c0391a1d2350e4f37e Author: Chuck Lever <chuck.lever@oracle.com> Date: Sat Apr 18 09:43:58 2009 -0400 support: Provide an API for creating a privileged RPC client We needed to guarantee that some RPC programs, such as PMAP, got an unprivileged port, to prevent exhausting the local privileged port space sending RPC requests that don't need such privileges. nfs_get_rpcclient() provides that feature. However, some RPC programs, such as MNT and UMNT, require a privileged port. So, let's provide an additional API for this that also supports IPv6 and setting a destination port. Signed-off-by: Chuck Lever <chuck.lever@oracle.com> Signed-off-by: Steve Dickson <steved@redhat.com> commit 41eb279c2f46ca020bc3b8d17811555f74b99d2e Author: Benny Halevy <bhalevy@panasas.com> Date: Wed Apr 15 14:16:08 2009 -0400 utils/nfsd: fix -N optarg error printout as currently printed c is the version number, not a string char, therefore is should be printed as %d not %c. That said, just print optarg as %s since it might be non-numeric. Signed-off-by: Benny Halevy <bhalevy@panasas.com> Signed-off-by: Steve Dickson <steved@redhat.com> commit d4008af910ba1d527f00f8207fb3f8f5709e943d Author: Chuck Lever <chuck.lever@oracle.com> Date: Wed Apr 15 12:52:48 2009 -0400 getport.c: fix non-standard C Squelch a compiler warning in getport.c: getport.c:65: warning: static is not at beginning of declaration Signed-off-by: Chuck Lever <chuck.lever@oracle.com> Signed-off-by: Steve Dickson <steved@redhat.com> commit c51d826a201095fb3a7c68c3666e2b795a2b687d Author: Chuck Lever <chuck.lever@oracle.com> Date: Wed Apr 15 12:38:40 2009 -0400 nfs-utils: reverse order of librpcsecgss and libgssglue checks The check that validates the version of librpcsecgss also needs to have libgssglue installed. Without libgssglue, ./configure complains that it can't find rpcsecgss, even though it's installed. It also turns out that the error message generated by pkg-config is more complete than the one we have in aclocal/rpcsec_vers.m4, so just let those PKG_CHECK_MODULES m4 macros use the default error message. Signed-off-by: Chuck Lever <chuck.lever@oracle.com> Signed-off-by: Steve Dickson <steved@redhat.com> commit b09228c86d4049b11c6ddf9284a637a211993b44 Author: Jeff Layton <jlayton@redhat.com> Date: Wed Apr 15 12:04:06 2009 -0400 nfs-utils: add IPv6 code to gssd All of the pieces to handle IPv6 are now in place. Add IPv6-specific code wrapped in the proper #ifdef's so that IPv6 support works when it's enabled at build-time. Reviewed-by: Chuck Lever <chuck.lever@oracle.com> Signed-off-by: Jeff Layton <jlayton@redhat.com> Signed-off-by: Steve Dickson <steved@redhat.com> commit afba62a753549ae3c2a713b08163ab84bb622183 Author: Jeff Layton <jlayton@redhat.com> Date: Wed Apr 15 12:01:46 2009 -0400 nfs-utils: switch gssd to use standard function for getting an RPC client We already have a common function for setting up an RPC client. That function uses the tirpc API when tirpc is enabled and is also already IPv6 enabled. Switch gssd to use it. Reviewed-by: Chuck Lever <chuck.lever@oracle.com> Signed-off-by: Jeff Layton <jlayton@redhat.com> Signed-off-by: Steve Dickson <steved@redhat.com> commit d9c3935de6c82cea687544c5d45d999297da141d Author: Jeff Layton <jlayton@redhat.com> Date: Wed Apr 15 11:36:07 2009 -0400 nfs-utils: query for remote port using rpcbind instead of getaddrinfo We already have the server's address from the upcall, so we don't really need to look it up again, and querying the local services DB for the port that the remote server is listening on is just plain wrong. Use rpcbind to set the port for the program and version that we were given in the upcall. The exception here is NFSv4. Since NFSv4 mounts are supposed to use a well-defined port then skip the rpcbind query for that and just set the port to the standard one (2049). Reviewed-by: Chuck Lever <chuck.lever@oracle.com> Signed-off-by: Jeff Layton <jlayton@redhat.com> Signed-off-by: Steve Dickson <steved@redhat.com> commit 59189376db057ae08a710cb2b258426230f687d7 Author: Jeff Layton <jlayton@redhat.com> Date: Wed Apr 15 11:34:51 2009 -0400 nfs-utils: store the address given in the upcall for later use The current upcall could be more efficient. We first convert the address to a hostname, and then later when we set up the RPC client, we do a hostname lookup to convert it back to an address. Begin to change this by keeping the address in the clnt_info that we get out of the upcall. Since a sockaddr has a port field, we can also eliminate the port from the clnt_info. Finally, switch to getnameinfo() instead of gethostbyaddr(). We'll need to use that call anyway when we add support for IPv6. Reviewed-by: Chuck Lever <chuck.lever@oracle.com> Signed-off-by: Jeff Layton <jlayton@redhat.com> Signed-off-by: Steve Dickson <steved@redhat.com> commit 4b27decace00754006d854a4bbbaa7dd305cba1c Author: Jeff Layton <jlayton@redhat.com> Date: Wed Apr 15 10:29:04 2009 -0400 nfs-utils: make getnameinfo() required for --enable-gss Systems that are so old that they don't have getnameinfo() in glibc are probably also running kernels that are so old that they don't support gssapi upcalls anyway. Make --enable-gss dependent on the presence of the getnameinfo() function. This allows us to reduce some conditional compilation. Reviewed-by: Chuck Lever <chuck.lever@oracle.com> Signed-off-by: Jeff Layton <jlayton@redhat.com> Signed-off-by: Steve Dickson <steved@redhat.com> commit fa5352f78533c7ad1d8603c1a4ba08fa82768e6b Author: Steve Dickson <steved@redhat.com> Date: Wed Apr 8 10:26:26 2009 -0400 The --list option does not work on server stats. The print_stats_list() routine was using the client's stats to decide whether to display any stats. This did not work when there was only server stats. This patch breaks up print_stats_list into two different routines allowing both server and clients stats to be listed. Signed-off-by: Steve Dickson <steved@redhat.com> commit 500fab45f73c0ba1bc442157ef3d7744f20e6b2a Author: Steve Dickson <steved@redhat.com> Date: Wed Apr 8 09:48:58 2009 -0400 The server stats were not being updated with the -Z options causing the stats to be incorrect. Signed-off-by: Steve Dickson <steved@redhat.com> commit cb81340660112f9296205901b09c0668a480bc47 Author: Steve Dickson <steved@redhat.com> Date: Wed Apr 8 09:28:22 2009 -0400 Eliminate the displaying zero stats when the explicit protocol is specified (-2, -3, -4) the -Z and or --list options. When a particular protocol is specified and either the -Z or --list options are used, zeros or blank lines are echoed to the screen when there is not any NFS traffic. This cause any useful data to be scroll off the screen. With this patch only non-zero stats will be shown, which makes the output of these options more condensed and in turn more useful. Signed-off-by: Steve Dickson <steved@redhat.com> commit ca8eb17798fb9b4936a38cc58fe379e9e8d379f9 Author: Kevin Constantine <kevin.constantine@disneyanimation.com> Date: Sat Apr 4 07:18:26 2009 -0400 nfsstat: Add --list flag nfsstat.c: Adds the --list flag to print information in a list format instead of the standard multi-column format nfsstat.man: Updates the manpage to include the --list flag. Signed-off-by: Kevin Constantine <kevin.constantine@disneyanimation.com> Signed-off-by: Steve Dickson <steved@redhat.com> commit 524cdc4eb1663e5c10d12160e48c45dc81852568 Author: Steve Dickson <steved@redhat.com> Date: Sat Apr 4 06:46:09 2009 -0400 Keep the interval output quite when there is no NFS traffic. The 'nfsstat -Z5' command continually outputs the following when there is no NFS traffic. Client rpc stats: calls retrans authrefrsh 0 0 0 This patch adds code that will keep the interval output quite so real results will not be scrolled of the screen Signed-off-by: Steve Dickson <steved@redhat.com> commit d2319b9cabc67d999b16aea2077a4a3c642ec28d Author: Kevin Constantine <kevin.constantine@disneyanimation.com> Date: Sat Apr 4 06:29:01 2009 -0400 nfsstat: Print diff stats every N seconds nfsstat.c: Implements an optional "interval" argument to --sleep nfsstat.man: Explains the use of --sleep[interval] Reviewed-By: Greg Banks <gnb@fmeh.org> Signed-off-by: Kevin Constantine <kevin.constantine@disneyanimation.com> Signed-off-by: Steve Dickson <steved@redhat.com> commit 70561910500556c8109ca2e5683a92ed51c82bb7 Author: Kevin Coffman <kwc@citi.umich.edu> Date: Fri Apr 3 15:20:09 2009 -0400 cacheio: return any original error from qword_eol If the initial fflush() fails in qword_eol, log the failure and return the indication of the original failure, not the successful cover-up. Signed-off-by: Kevin Coffman <kwc@citi.umich.edu> Signed-off-by: Steve Dickson <steved@redhat.com> commit 7de6c8c54ac195d659c8ac2d2ac01ef47c6c3ecd Author: Kevin Coffman <kwc@citi.umich.edu> Date: Fri Apr 3 15:18:16 2009 -0400 svcgssd: check the return code from qword_eol() and logfailures If qword_eol() fails while writing the context information, log an indication of the failure. This addresses at least one cause of the intermittent, and previously undiagnosed, problem of the server returning GSS_S_NO_CONTEXT when a context was seemingly successfully created and sent down to the kernel. In my case there was a mis-match between kernel and user-land configuration resulting in the proper kernel module not being loaded. Therefore the write of the context failed, but was not logged by svcgssd. When the kernel goes to find the resulting context, it was really not there and correctly returned GSS_S_NO_CONTEXT to the client. Signed-off-by: Kevin Coffman <kwc@citi.umich.edu> Signed-off-by: Steve Dickson <steved@redhat.com> commit f0ed8401e854e1cbd23b2fb5dca5e88dec2df7c4 Author: Ben Myers <bpm@sgi.com> Date: Fri Apr 3 15:13:10 2009 -0400 Mountd should use separate lockfiles Mountd keeps file descriptors used for locks separate from those used for io and seems to assume that the lock will only be released on close of the file descriptor that was used with fcntl. Actually the lock is released when any file descriptor for that file is closed. When setexportent() is called after xflock() he closes and reopens the io file descriptor and defeats the lock. This patch fixes that by using a separate file for locking, cleaning them up when finished. Signed-off-by: Ben Myers <bpm@sgi.com> Signed-off-by: Steve Dickson <steved@redhat.com> commit c56152202a3000c69b87f9cb90f40166f1f21275 Author: Chuck Lever <chuck.lever@oracle.com> Date: Fri Apr 3 15:03:15 2009 -0400 nfs-utils: fix AC_CHECK_FUNC calls in configure.ac AC_CHECK_FUNC and AC_CHECK_FUNCS take 3 args. Any ones beyond that are ignored. In several places, we're passing the "action-if-not-found" in as the 4th arg so it's being ignored. Signed-off-by: Jeff Layton <jlayton@redhat.com> Signed-off-by: Chuck Lever <chuck.lever@oracle.com> Signed-off-by: Steve Dickson <steved@redhat.com> commit 3724317e223d46908aac2405bbd73ea2de4f36e5 Author: Steve Dickson <steved@redhat.com> Date: Mon Mar 23 17:13:01 2009 -0400 In recent Fedora builds, the '-D _FORTIFY_SOURCE=2' compile flag has been set. This cause warnings to be generated when return values from reads/writes (and other calls) are not checked. The patch address those warnings. Signed-off-by: Steve Dickson <steved@redhat.com> commit d62365079f711b25e73522b2af380abc2a7e2788 Author: Jeff Layton <jlayton@redhat.com> Date: Mon Mar 23 08:13:01 2009 -0400 Regardless though, it's dangerous to keep invalid pointers around like this. Later code changes may make it more likely for this problem to occur. Also eliminate some unneeded NULL pointer checks before freeing memory. Signed-off-by: Jeff Layton <jlayton@redhat.com> Signed-off-by: Steve Dickson <steved@redhat.com> commit 38062464a09868ff579b3c3c0b43fcd550ea3c61 Author: Jeff Layton <jlayton@redhat.com> Date: Mon Mar 23 08:12:37 2009 -0400 gssd: free buffer allocated by gssd_k5_err_msg There's no way for the caller of gssd_k5_err_msg to know whether to free the string it returns. It can call krb5_get_error_message which returns a string that must be freed via krb5_free_error_string. The other ways that it can return a string require that the memory not be freed. Deal with this by copying the string to a new buffer in all cases. Then we can properly free the string allocated by krb5_get_error_message. Signed-off-by: Jeff Layton <jlayton@redhat.com> Signed-off-by: Steve Dickson <steved@redhat.com> commit 7f1f9985cf510b087e7a817597094acba9143795 Author: Jeff Layton <jlayton@redhat.com> Date: Mon Mar 23 08:12:14 2009 -0400 gssd: NULL-terminate buffer after read in read_service_info (try #2) Valgrind complains that we're passing an unintialized buffer to sscanf here. The main problem seems to be that we're not ensuring that the buffer is NULL terminated before we pass it off. This is the second version of this patch, the first one did not increase the buffer allocation by 1 which could have led to clobbering the next byte on the stack if nbytes == INFOBUFLEN. Signed-off-by: Jeff Layton <jlayton@redhat.com> Signed-off-by: Steve Dickson <steved@redhat.com> commit 690b2eb64e44dc96db68900dd17ea4586b51966e Author: Jeff Layton <jlayton@redhat.com> Date: Mon Mar 23 08:11:41 2009 -0400 gssd: initialize fakeseed in prepare_krb5_rfc1964_buffer This causes a compiler warning and also means that we're stuffing the buffer with uninitialized junk from the stack. Other places in this code initialize "fakeseed" to 0. Do the same here. Signed-off-by: Jeff Layton <jlayton@redhat.com> Signed-off-by: Steve Dickson <steved@redhat.com> commit 1a4bbe59d5cf0684c46b329fcc765eac97dab6ba Author: Chuck Lever <chuck.lever@oracle.com> Date: Mon Mar 16 13:42:44 2009 -0400 nfs-utils: clean up handling of libgssglue in gssd Makefile From: Jeff Layton <jlayton@redhat.com> Make the pkgconfig check for libgssglue conditional on tirpc being enabled. When it's disabled, the pkgconfig check for librpcsecgss will pull in the gssglue lib and include dir automatically. Also, make sure we include GSSGLUE_CFLAGS and the GSSGLUE_LIBS to the appropriate places in utils/gssd/Makefile.am so that we pick up the gssglue libs when tirpc is enabled. Signed-off-by: Jeff Layton <jlayton@redhat.com> Signed-off-by: Chuck Lever <chuck.lever@oracle.com> Signed-off-by: Steve Dickson <steved@redhat.com> commit 336f8bca825416082d62ef38314f3e0b7e8f5cc2 Author: Chuck Lever <chuck.lever@oracle.com> Date: Mon Mar 16 13:40:47 2009 -0400 nfs-utils: Include legacy or TI-RPC headers, not both Data type incompatibilities between the legacy RPC headers and the TI-RPC headers mean we can't use libtirpc with code that was compiled against the legacy RPC headers. The definition of rpcprog_t for example is "unsigned long" in the legacy library, but it's "uint32_t" for TI-RPC. On 32-bit systems, these types happen to have the same width, but on 64-bit systems they don't, making more complex data structures that use these types in fields ABI incompatible. Adopt a new strategy to deal with this issue. When --enable-tirpc is set, append "-I/usr/include/tirpc" to the compilation steps. This should cause the compiler to grab the tirpc/ headers instead of the legacy headers. Now, for TI-RPC builds, the TI-RPC legacy functions and the TI-RPC headers will be used. On legacy systems, the legacy headers and legacy glibc RPC implementation will be used. A new ./configure option is introduced to allow system integrators to use TI-RPC headers in some other location than /usr/include/tirpc. /usr/include/tirpc remains the default setting for this new option. The gssd implementation presents a few challenges, but it turns out the gssglue library is similar to the auth_gss pieces of TI-RPC. To avoid similar header incompatibility issues, gssd now uses libtirpc instead of libgssglue if --enable-tirpc is specified. There may be other issues to tackle with gssd, but for now, we just make sure it builds with --enable-tirpc. Note also: svc_getcaller() is a macro in both cases that points to a sockaddr field in the svc_req structure. The legacy version points to a sockaddr_in type field, but the TI-RPC version points to a sockaddr_in6 type field. rpc.mountd unconditionally casts the result of svc_getcaller() to a sockaddr_in *. This should be OK for TI-RPC as well, since rpc.mountd still uses legacy RPC calls (provided by glibc, or emulated by TI-RPC) to set up its listeners, and therefore rpc.mountd callers will always be from AF_INET addresses for now. Signed-off-by: Chuck Lever <chuck.lever@oracle.com> Signed-off-by: Steve Dickson <steved@redhat.com> commit 530abf870f5188b2bdd4a9211d7c93fb6ce68854 Author: Chuck Lever <chuck.lever@oracle.com> Date: Mon Mar 16 13:37:09 2009 -0400 configure: move IPv6 feature checks into aclocal Clean up: for consistency with other local feature checks, move IPv6 feature checks into aclocal/ Signed-off-by: Chuck Lever <chuck.lever@oracle.com> Signed-off-by: Steve Dickson <steved@redhat.com> commit fd6a34c83051f82c9064963e24976bf3c47a5422 Author: Chuck Lever <chuck.lever@oracle.com> Date: Mon Mar 16 13:32:49 2009 -0400 nfs-utils: don't need extra libs to do AC_CHECK_LIBS for librpcsecgss From: Jeff Layton <jlayton@redhat.com> The conftest should work without these extra libs being included. Signed-off-by: Jeff Layton <jlayton@redhat.com> Signed-off-by: Chuck Lever <chuck.lever@oracle.com> Signed-off-by: Steve Dickson <steved@redhat.com> commit 617d0ac4e51889506f3afc39f5ef686d5c0e0d15 Author: Chuck Lever <chuck.lever@oracle.com> Date: Mon Mar 16 13:31:27 2009 -0400 configure: Move rpcsecgss checking into aclocal Clean up: Introduce two more aclocal scripts for handling rpcsecgss dependency checking. Signed-off-by: Chuck Lever <chuck.lever@oracle.com> Signed-off-by: Steve Dickson <steved@redhat.com> commit 767773f33c10dfeaf44ef7d6aea0946f5d9d248f Author: Chuck Lever <chuck.lever@oracle.com> Date: Mon Mar 16 13:30:26 2009 -0400 configure: pull common nfsidmap and event checks intoaclocal/ Clean up: Create an aclocal script for the nfsidmap library and headers checks used for both --enable-gss and --enable-nfsv4. Move libevent checks out too. Signed-off-by: Chuck Lever <chuck.lever@oracle.com> Signed-off-by: Steve Dickson <steved@redhat.com> commit d271666403a87e60bbdee85372b6dcf35c2975ed Author: Chuck Lever <chuck.lever@oracle.com> Date: Mon Mar 16 13:29:18 2009 -0400 nfs-utils: replace function-specific switches withHAVE_LIBTIRPC Instead of switching in TI-RPC-specific logic with a function-specific switch like HAVE_CLNT_VG_CREATE, let's use the more generic HAVE_LIBTIRPC macro everywhere. This simplifies ./configure (always a good thing), and makes it more clear in the source code exactly what the extra conditionally compiled code is for. Signed-off-by: Chuck Lever <chuck.lever@oracle.com> Signed-off-by: Steve Dickson <steved@redhat.com> commit 31c4305a67ca434ea5614f5bdb083fbe9acc2f7e Author: Chuck Lever <chuck.lever@oracle.com> Date: Mon Mar 16 13:28:42 2009 -0400 configure: move TI-RPC checks into aclocal Define an aclocal test for TI-RPC headers and library, and move the TI-RPC checks earlier in our configure script so other feature checks can use the availability of TI-RPC to decide what to do. Since bindresvport_sa is required just for IPv6 support, move that check to the IPv6 feature tests. Signed-off-by: Chuck Lever <chuck.lever@oracle.com> Signed-off-by: Steve Dickson <steved@redhat.com> commit 8b40c0bf17ca3e007721085a3bb627a2abd52777 Author: Chuck Lever <chuck.lever@oracle.com> Date: Mon Mar 16 13:26:34 2009 -0400 configure: add defensive quoting in some function checks Clean up: Add proper m4 quoting in macros that check for the presence of some functions in configure.ac. Signed-off-by: Chuck Lever <chuck.lever@oracle.com> Signed-off-by: Steve Dickson <steved@redhat.com> commit 06da4cfd46942acaaa5bd2e7933fd290701d186d Author: Steve Dickson <steved@redhat.com> Date: Sun Mar 8 10:10:25 2009 -0400 Added back the some logging variables which are no longer used but, unfortunately, they are extern-ed by public headers files which are not under the control of this package. Spotted-by: Juergen Daubert <jue@jue.li> Signed-off-by: Steve Dickson <steved@redhat.com>
commit d201426838f6cd02e52e7e841901fa92a20e74f1 Author: Chuck Lever <chuck.lever@oracle.com> Date: Thu Mar 5 06:23:25 2009 -0500 gssd: include gssapi/gssapi.h before write_bytes.h In gssd/context_lucid.c, ensure that gss_buffer_desc and gss_OID_desc are defined before write_bytes.h, which uses these definitions, is included. With TI-RPC, these definitions are not provided by rpc/rpc.h. It appears that <gssapi/gssapi_krb5.h> already includes krb5.h and gssapi.h (on my system, anyway) so let's drop those includes. Ideally write_bytes.h itself should include the needed headers, but some source files that use Heimdal include a different, Heimdal- compatible, header to get these definitions. Pointed-out-by: Jeff Layton <jlayton@redhat.com> Signed-off-by: Chuck Lever <chuck.lever@oracle.com> Signed-off-by: Steve Dickson <steved@redhat.com> commit d78a45a152d2270b6e92b451b6b4585567ec2f8a Author: Chuck Lever <chuck.lever@oracle.com> Date: Thu Mar 5 06:22:31 2009 -0500 gssd: Use same style for including config.h that rest of nfs-utils uses Clean up. Signed-off-by: Chuck Lever <chuck.lever@oracle.com> Signed-off-by: Steve Dickson <steved@redhat.com> commit e0e72c9ee9bbbf6bb10b76a33f1259aeaa4a8f61 Author: Chuck Lever <chuck.lever@oracle.com> Date: Thu Mar 5 06:21:34 2009 -0500 mount.nfs: squelch compiler warning for TI-RPC builds The printf format string in nfs_pp_debug() assumes the @program and @version arguments are unsigned long, because the legacy RPC headers define both rpcprog_t and rpcvers_t as unsigned long types. However, the TI-RPC headers define both types as uint32_t, which requires a different printf format type. If we replace the legacy headers with TI-RPC headers, this type mismatch generates compiler warnings that are nothing but noise. We are about to provide a switch at ./configure time to allow the use of either the legacy RPC headers or the TI-RPC headers, so we need a printf format that works in both cases. To squelch the compiler warnings that occur when using the TI-RPC headers, cast both arguments in the fprintf statement to the widest of the two types ("unsigned long" or "uint32_t"). Signed-off-by: Chuck Lever <chuck.lever@oracle.com> Signed-off-by: Steve Dickson <steved@redhat.com> commit 27a49079b03316eebcbc74197b73988b01b58ecc Author: Chuck Lever <chuck.lever@oracle.com> Date: Thu Mar 5 06:20:40 2009 -0500 nfs-utils: Provide type-checked version of svc_getcaller() TI-RPC's version of the svc_getcaller() macro points to a sockaddr_in6, not a sockaddr_in, though for AF_INET callers, an AF_INET address resides there. To squelch compiler warnings when the TI-RPC version of the svc_req structure is used, add inline helpers with appropriate type casting. Note that tcp_wrappers support only AF_INET addresses for now. Signed-off-by: Chuck Lever <chuck.lever@oracle.com> Signed-off-by: Steve Dickson <steved@redhat.com> commit 5529fdbb4acb2507b79acf07e08c2a88c1df9e38 Author: Chuck Lever <chuck.lever@oracle.com> Date: Thu Mar 5 06:16:04 2009 -0500 configure: Remove CPPFLAGS substitution At least on my systems, the AM_CPPFLAGS substitution at the end of configure.ac is not needed. It adds an extra copy of "-I../../support/includes" to each compile step. Signed-off-by: Chuck Lever <chuck.lever@oracle.com> Signed-off-by: Steve Dickson <steved@redhat.com> commit 2f3c0dc6908f534341f4dd24c44dcfbea7c7b253 Author: Chuck Lever <chuck.lever@oracle.com> Date: Thu Mar 5 06:13:33 2009 -0500 nfs-utils: Replace getservbyname(3) The getservbyname(3) function is not re-entrant, and anyway, the man page says it is obsolete. Replace it with a call to getaddrinfo(3). Signed-off-by: Chuck Lever <chuck.lever@oracle.com> Signed-off-by: Steve Dickson <steved@redhat.com> commit 71cbf46e564621d4cd2af61c384a79b2c0174a36 Author: Valerie Aurora Henson <vaurora@redhat.com> Date: Wed Mar 4 17:53:41 2009 -0500 Update example in exports(5) man page Signed-off-by: Valerie Aurora Henson <vaurora@redhat.com> Signed-off-by: Steve Dickson <steved@redhat.com> commit c8e40bc4a1a9f8e7c91ca909d553172b7a684a18 Author: Ben Greear <greearb@candelatech.com> Date: Wed Mar 4 17:07:55 2009 -0500 Have sizeof using the correct value in nfs_getlocalport() Signed-off-by: Ben Greear <greearb@candelatech.com> Signed-off-by: Steve Dickson <steved@redhat.com> commit 882cf0a91b9df297b5ebe8c79a40478d3de4ae05 Author: Chuck Lever <chuck.lever@oracle.com> Date: Wed Mar 4 16:58:47 2009 -0500 nfs-utils: Remove fprintf() call from support/nfs/getport.c getport.c is effectively a library, so it should not be emitting messages via printf. Signed-off-by: Chuck Lever <chuck.lever@oracle.com> Signed-off-by: Steve Dickson <steved@redhat.com> commit ea85571bf87062790dfceb6a0eee3549c8890ad0 Author: Chuck Lever <chuck.lever@oracle.com> Date: Wed Mar 4 16:31:10 2009 -0500 showmount command: remove legacy RPC logic Turns out both legacy RPC and TI-RPC have a clnt_create(3) API. So there's really no need to keep the old open-coded transport logic around. Signed-off-by: Chuck Lever <chuck.lever@oracle.com> Signed-off-by: Steve Dickson <steved@redhat.com> commit 0417c70889eb6ee8e009ceeeca398ea8e563bbcc Author: Chuck Lever <chuck.lever@oracle.com> Date: Wed Mar 4 16:29:29 2009 -0500 nfs(5): document new [no]resvport option Kernel 2.6.25 deprecates intr/nointr. Reflect this change in nfs(5). Signed-off-by: Chuck Lever <chuck.lever@oracle.com> Signed-off-by: Steve Dickson <steved@redhat.com> commit 260eb781154f288055f42602aaa25b3f608404ea Author: Chuck Lever <chuck.lever@oracle.com> Date: Wed Mar 4 16:27:36 2009 -0500 nfs(5): document new [no]resvport option Kernel 2.6.28 adds a new mount option: [no]resvport. Document the new option in the nfs(5) man page. Signed-off-by: Chuck Lever <chuck.lever@oracle.com> Signed-off-by: Steve Dickson <steved@redhat.com> commit 20618b27acf6ff52f2654740ebf32516eb1ab1e0 Author: Chuck Lever <chuck.lever@oracle.com> Date: Wed Mar 4 16:26:48 2009 -0500 The legacy version of nfs_name_to_address() returned an incorrect value for the size of the returned address. Signed-off-by: Chuck Lever <chuck.lever@oracle.com> Signed-off-by: Steve Dickson <steved@redhat.com> commit 38667906c89d6944faaced7fbcda027643dc10ad Author: Chuck Lever <chuck.lever@oracle.com> Date: Wed Mar 4 15:54:39 2009 -0500 configure: fix AC_CACHE_VAL warnings on Fedora 10 Autoconf 2.63 (and maybe earlier releases) complains about the cache variable name used in aclocal/libblkid.m4: configure.ac:217: warning: AC_CACHE_VAL(libblkid_is_recent, ...): suspicious cache-id, must contain _cv_ to be cached ../../lib/autoconf/general.m4:1974: AC_CACHE_VAL is expanded from... aclocal/libblkid.m4:2: AC_BLKID_VERS is expanded from... configure.ac:217: the top level This addresses https://bugzilla.redhat.com/attachment.cgi?bugid=481386 . Signed-off-by: Chuck Lever <chuck.lever@oracle.com> Signed-off-by: Steve Dickson <steved@redhat.com> commit 9d1cf415ecf3466ca5c4cf518915e363d75a6a6e Author: Steve Dickson <steved@redhat.com> Date: Wed Mar 4 15:36:27 2009 -0500 General clean up. Removed unused routines. Reworked syslog message to (hopefully) make it more sensible. Move "#ifdef HAVE_LIBWRAP" around so nothing will be defined when tcp wrapper is not configured. Signed-off-by: Steve Dickson <steved@redhat.com> commit ae8e7dbe9641dbc69c34bcede416f0d91612d3f1 Author: Steve Dickson <steved@redhat.com> Date: Wed Mar 4 15:24:58 2009 -0500 Converted good_client() to correctly use the tcp wrapper interface and added a note to the mountd man page saying hostnames will be ignored when they can not be looked up. Signed-off-by: Steve Dickson <steved@redhat.com> commit 681d340e682d95dd9fa6c120de2a24ddb155d581 Author: Steve Dickson <steved@redhat.com> Date: Wed Mar 4 15:22:37 2009 -0500 Only hash on IP address and Program number. Including the Procedure number only creates needles extra hash entries. Signed-off-by: Steve Dickson <steved@redhat.com> commit 4cacc965afc4fb03a465ffcc6cb3078aeadc3818 Author: Tomas Richter <krik3t@gmail.com> Date: Wed Feb 18 13:33:27 2009 -0500 Exportfs and rpc.mountd optimalization There were some problems with exportfs and rpc.mountd for long export lists - see https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=76643 I do optimalization as my bachelors thesis (Facuulty of informatics, Masaryk's university Brno, Czech Republic), under lead of Yenya Kasprzak. Both exportfs and rpc.mount build linked list of exports (shared functions in export.c). Every time they are inserting new export into list, they search for same export in list. I replaced linked list by hash table and functions export_add and export_lookup by functions hash_export_add and hash_export_lookup (export.c). Because some other functions required exportlist as linked list, hash table has some implementation modification im comparison with ordinary hash table. It also keeps exports in linked list and has pointer to head of the list. So there's no need of implementation function <for_all_in_hash_table>. Signed-off-by: Tomas Richter <krik3t@gmail.com> Signed-off-by: Steve Dickson <steved@redhat.com> commit 35001db4aaafa8a17e13b8c13cf74508d4a93f2f Author: Lukas Hejtmanek <xhejtman@ics.muni.cz> Date: Wed Feb 18 07:48:11 2009 -0500 rpc.idmapd should tell the user more verbosely if Dnotify support is missing in kernel. Signed-off-by: Lukas Hejtmanek <xhejtman@ics.muni.cz> Signed-off-by: Steve Dickson <steved@redhat.com> commit 4f15bd6e3ebfebef16c1db61b28a98863c36cb81 Author: Chuck Lever <chuck.lever@oracle.com> Date: Tue Feb 17 16:27:43 2009 -0500 umount command: remove do_nfs_umount23 function Remove do_nfs_umount23() now that it is unused. Signed-off-by: Chuck Lever <chuck.lever@oracle.com> Signed-off-by: Steve Dickson <steved@redhat.com> commit c735a8331b082038a0e83ec4187c2656b0804eea Author: Chuck Lever <chuck.lever@oracle.com> Date: Tue Feb 17 16:26:31 2009 -0500 umount.nfs command: Support AF_INET6 server addresses Replace existing mount option parser in nfsumount.c with the new pmap stuffer function nfs_options2pmap(). Mount option parsing for umount.nfs now works the same as it does for mount option rewriting in the text-based mount.nfs command. This adds a number of new features: 1. The new logic supports resolving AF_INET6 server addresses 2. Support is added for the recently introduced "mountaddr" option. 3. Parsing numeric option values is much more careful 4. Option parsing no longer uses xmalloc/xstrdup, so it won't fail silently if memory can't be allocated 5. Mount program number set in /etc/rpc is respected 6. Mount doesn't exit with EX_USAGE if the hostname lookup fails Signed-off-by: Chuck Lever <chuck.lever@oracle.com> Signed-off-by: Steve Dickson <steved@redhat.com> commit 97de03f8c866b9d3e790d64f4e9ac24011aaa5b1 Author: Chuck Lever <chuck.lever@oracle.com> Date: Tue Feb 17 16:25:27 2009 -0500 umount.nfs command: Add an AF_INET6-capable version of nfs_call_unmount() We need an AF_INET6-capable version of nfs_call_unmount() to allow the umount.nfs command to support unmounting NFS servers over IPv6. The legacy mount.nfs command still likes to use nfs_call_umount(), so we leave it in place and introduce a new API that can take a "struct sockaddr *". The umount.nfs command will invoke this new API, but we'll leave the legacy mount.nfs command and the umount.nfs4 command alone. The umount.nfs4 command does not need this support because NFSv4 unmount operations are entirely local. Signed-off-by: Chuck Lever <chuck.lever@oracle.com> Signed-off-by: Steve Dickson <steved@redhat.com> commit a68a1a85533142880a63c2de969db38118341c41 Author: Chuck Lever <chuck.lever@oracle.com> Date: Tue Feb 17 16:22:53 2009 -0500 nfs-utils: git should ignore cscope.* files Tell git to ignore cscope database files. Signed-off-by: Chuck Lever <chuck.lever@oracle.com> Signed-off-by: Steve Dickson <steved@redhat.com> commit 52ec1b5fceece8f63b97afc6d6b78bfabff12669 Author: Steve Dickson <steved@redhat.com> Date: Tue Feb 17 15:33:58 2009 -0500 The mount sockaddr len (mnt_salen) is not be set in nfs_extract_server_addresses() which causes the mount.nfs command to segmentation fault when a NFS server only supports UDP mounts. Signed-off-by: Steve Dickson <steved@redhat.com> commit e7ec5e745e851ad10c56d579463ee7e1b85c9c21 Author: Chuck Lever <chuck.lever@oracle.com> Date: Tue Feb 17 15:19:58 2009 -0500 text-based mount command: fix return value from po_rightmost() Recently commit 0dcb83a8 changed the po_rightmost() function to distinguish among several possible mount options by taking a table containing the alternatives, and returning the table index of the entry which is rightmost in the mount option string. If it didn't find any mount option that matches an entry from the passed-in table, it returned zero. This was the same behavior it had before, when it only checked for two options at a time. It returned PO_NEITHER_FOUND, which was zero. Since this is C, however, zero also happens to be a valid index into the passed-in array of options. Modify the po_rightmost() function to return -1 if the entry wasn't found, and fix up the callers to look for a C-style array index that starts at zero. Thanks to Steve Dickson for troubleshooting the problem. His solution was merely to bump the return value, as callers already expected an ordinal index instead of a C-style index. I prefer this equivalent but slightly more extensive change because it makes the behavior of po_rightmost() more closely match how humans understand C arrays to work. Let's address some of the confusion that caused this bug, as well as fixing the run-time behavior. Signed-off-by: Chuck Lever <chuck.lever@oracle.com> Signed-off-by: Steve Dickson <steved@redhat.com> commit 1f0a104ff4aa07141d59cfd1d78157e8ddf7e4ed Author: Chuck Lever <chuck.lever@oracle.com> Date: Tue Jan 27 17:48:17 2009 -0500 text-based mount command: support AF_INET6 inrewrite_mount_options() Now that we have an AF_INET6-capable probe_bothports(), we can support AF_INET6 when rewriting text-based NFS mount options. This should be adequate to support NFS transport protocol and version negotiation with AF_INET6 NFS servers. Signed-off-by: Chuck Lever <chuck.lever@oracle.com> Signed-off-by: Steve Dickson <steved@redhat.com> commit 3163dabcf0a6b992859508368baf67c918d2c091 Author: Chuck Lever <chuck.lever@oracle.com> Date: Tue Jan 27 17:47:06 2009 -0500 text-based mount command: fix mount option rewriting logic Fix a bunch of corner cases in the text-based mount option rewriting logic. Signed-off-by: Chuck Lever <chuck.lever@oracle.com> Signed-off-by: Steve Dickson <steved@redhat.com> commit 9d5ee403d5d4fd27ea41a674ca2e99ca1daa9f25 Author: Chuck Lever <chuck.lever@oracle.com> Date: Tue Jan 27 17:45:48 2009 -0500 text-based mount options: Use new pmap stuffer whenrewriting mount options all nfs_options2pmap() in nfs_rewrite_mount_options() instead of open-coding the logic to convert mount options to a pmap struct. The new nfs_options2pmap() function is more careful about avoiding invalid mount option values, and handles multiply-specified transport protocol options correctly. Signed-off-by: Chuck Lever <chuck.lever@oracle.com> Signed-off-by: Steve Dickson <steved@redhat.com> commit ff4f8ea366103d9b82cd2d9f8ced2426215d62b4 Author: Chuck Lever <chuck.lever@oracle.com> Date: Tue Jan 27 17:43:29 2009 -0500 text-based mount command: Function to stuff "struct pmap" from mount options Both the text-based mount.nfs command and the umount.nfs command need to fill in a pmap structure based on string mount options. Introduce a shared function that can do this. Signed-off-by: Chuck Lever <chuck.lever@oracle.com> Signed-off-by: Steve Dickson <steved@redhat.com> commit 0dcb83a870926de215307472676096056dabc9b0 Author: Chuck Lever <chuck.lever@oracle.com> Date: Tue Jan 27 17:41:02 2009 -0500 text-based mount command: make po_rightmost() work for N options Sometimes we need to choose the rightmost option among multiple different mount options. For example, we want to find the rightmost of "proto," "tcp," and "udp". Or, the rightmost of "vers," "nfsvers," "v2," and "v3". Update po_rightmost() to choose among N options instead of just two. Signed-off-by: Steve Dickson <steved@redhat.com> commit 29ac873f9024c8fcbca38ab09ba54cda3765b746 Author: Chuck Lever <chuck.lever@oracle.com> Date: Wed Jan 7 12:33:09 2009 -0500 showmount command: Quiesce warning when TI-RPC is disabled Make sure nfs_sm_pgmtbl is not compiled if TI-RPC functions are not available. This quiesces the following compiler warning: showmount.c:53: warning: nfs_sm_pgmtbl defined but not used Signed-off-by: Chuck Lever <chuck.lever@oracle.com> Signed-off-by: Steve Dickson <steved@redhat.com> commit ba05418f589c2d01f4e7e44c70d4844f43511927 Author: Chuck Lever <chuck.lever@oracle.com> Date: Wed Jan 7 12:18:11 2009 -0500 configure: Add new build option "--enable-tirpc" Allow easier testing of nfs-utils in legacy environments by providing a "configure" option to force the build not to use libtirpc, even if it's present on the build system. This can also be tried as a fallback if problems are found with the new TI-RPC-based nfs-utils code. The new option is: --enable-tirpc enable use of TI-RPC [default=no] Build option matrix: --disable-tirpc --disable-ipv6Default; IPv4 only, glibc RPC --disable-tirpc --enable-ipv6'configure' will fail --enable-tirpc --disable-ipv6IPv4 only, TI-RPC --enable-tirpc --enable-ipv6IPv4 and IPv6, TI-RPC Signed-off-by: Chuck Lever <chuck.lever@oracle.com> Signed-off-by: Steve Dickson <steved@redhat.com> commit aee8b1ab778f8e07b30305f10d4f9427023e314d Author: Chuck Lever <chuck.lever@oracle.com> Date: Wed Jan 7 12:06:14 2009 -0500 configure: Remove inet_ntop(3) check from configure.ac nfs-utils no longer uses inet_ntop(3) so remove checks for it from configure.ac. Signed-off-by: Chuck Lever <chuck.lever@oracle.com> Signed-off-by: Steve Dickson <steved@redhat.com> commit 533e5a05a172306462ac6c11d222a18fe562ec6d Merge: 09c7ad1... 8b4b718... Author: Steve Dickson <steved@redhat.com> Date: Wed Jan 7 12:03:07 2009 -0500 Merge branch 'master' of git://linux-nfs.org/nfs-utils commit 8b4b71895e95e55e9fa924c2cc159311eb329ee5 Author: Chuck Lever <chuck.lever@oracle.com> Date: Tue Jan 6 12:35:15 2009 -0500 configure: use "--disable-uuid" instead of"--without-uuid" Reported by Kevin Coffman and Jonathan Andrews. Apparently --without-uuid doesn't work with some older versions of autoconf, so correct the help text to document the option that actually does the trick. Signed-off-by: Chuck Lever <chuck.lever@oracle.com> Signed-off-by: Steve Dickson <steved@redhat.com> commit 18e84356811587a9cc405c4c6e18ca5573940e35 Author: Chuck Lever <chuck.lever@oracle.com> Date: Tue Jan 6 12:12:55 2009 -0500 mount command: Random clean up Fix some documenting comments and an error message in configure.ac. Signed-off-by: Chuck Lever <chuck.lever@oracle.com> Signed-off-by: Steve Dickson <steved@redhat.com> commit e9dbcba18defacbee9b5a48ddea9f6d3449b34e9 Author: Chuck Lever <chuck.lever@oracle.com> Date: Tue Jan 6 12:08:33 2009 -0500 mount: getport: don't use getaddrinfo(3) on old systems Older glibc versions have a getaddrinfo(3) that doesn't support AI_ADDRCONFIG. Detect that case and build something else for getport.c that will work adequately on those systems. Signed-off-by: Chuck Lever <chuck.lever@oracle.com> Signed-off-by: Steve Dickson <steved@redhat.com> commit 632650fa1a0b358f9d8d617cfd115a334c4b9b66 Author: Chuck Lever <chuck.lever@oracle.com> Date: Tue Jan 6 12:07:04 2009 -0500 mount command: use gethostbyname(3) when building on oldsystems Glibc's getaddrinfo(3) implementation was added over time. Some old versions support AI_ADDRCONFIG, but don't define it in header files. Some older versions don't support AI_ADDRCONFIG at all. Let's add specific checks to configure.ac to see that the local getaddrinfo(3) implementation is complete. If it isn't, we will make available a resolver that uses gethostbyname(3) and disable IPv6 entirely. This patch should apply to 1.1.4 as well as the current nfs-utils repo. The next patch has a fix for the getaddrinfo(3) call added since 1.1.4 in support/nfs/getport.c. Signed-off-by: Chuck Lever <chuck.lever@oracle.com> Signed-off-by: Steve Dickson <steved@redhat.com> commit 265f2708bdc6030250c13d46d70ed689c140c34e Author: Chuck Lever <chuck.lever@oracle.com> Date: Tue Jan 6 12:03:26 2009 -0500 mount: revert recent fix for build problems on old systems Revert the patch that added local definitions of AI_ADDRCONFIG and friends to utils/mount/network.c. While old header versions don't have those flags, even older versions of getaddrinfo(3) don't support those flags at all. The result is this error: mount.nfs: DNS resolution failed for 10.10.10.10: Bad value for ai_flags Signed-off-by: Chuck Lever <chuck.lever@oracle.com> Signed-off-by: Steve Dickson <steved@redhat.com> commit 09c7ad1cd9c5ca2fc46631a0057d47309abc8706 Author: Kevin Coffman <kwc@citi.umich.edu> Date: Mon Jan 5 14:07:05 2009 -0500 gssd: By default, don't spam syslog when users' credentials expire Change the priority of "common" log messages so that syslog doesn't get slammed/spammed when users' credentials expire, or there is another common problem which would cause error messages for all context creation requests. Note that this will now require that gssd or svcgssd option "-v" is used to debug these common cases. Original patch from Andrew Pollock <apollock@google.com>. Signed-off-by: Kevin Coffman <kwc@citi.umich.edu> Signed-off-by: Steve Dickson <steved@redhat.com> CC: Andrew Pollock <apollock@google.com> commit 6e3f696e788a56f30b5b3f8250647fe4cd63c884 Author: Steve Dickson <steved@redhat.com> Date: Sat Jan 3 14:08:25 2009 -0500 Now that the TCP wrapper actually works, mounts will be denied with misconfigured DNS configurations. Warnings will be logged when these types of configurations are detected. Signed-off-by: Steve Dickson <steved@redhat.com> commit 71f9f61517bf301f723b79651d53590ef97c3556 Author: Steve Dickson <steved@redhat.com> Date: Fri Dec 19 14:20:14 2008 -0500 To ensure the hash table of clients has valid access rights, check the modification times on both access files. If one of them have change, update the hash entry instead of creating a new entry. Signed-off-by: Steve Dickson <steved@redhat.com> commit 58e0a308fec476361dd21f7d3856faceb6e308ee Author: Steve Dickson <steved@redhat.com> Date: Fri Dec 19 14:11:09 2008 -0500 Clients IP address and host names are check on every RPC request, to both mountd and statd when TCP wrappers are enabled. To help this process scale better the access rights are stored in a hash table, which are hashed per IP address, RPC program and procudure numbers. Signed-off-by: Steve Dickson <steved@redhat.com> commit e47da19d63ea50a4e15f6ab491535d54097744de Author: Steve Dickson <steved@redhat.com> Date: Fri Dec 19 14:09:59 2008 -0500 When clients are define as IP addresses in /etc/hosts.deny, access is allow due to misinterpreting the return value of hosts_ctl(). This patch reworks that logic which closes that hole. Signed-off-by: Steve Dickson <steved@redhat.com> commit bc870150cc2116584aee288d15ac2b9a2f825ff5 Author: Steve Dickson <steved@redhat.com> Date: Wed Dec 17 16:41:35 2008 -0500 statd: not unlinking host files Statd is not unlinking host files during SM_UNMON and SM_UNMON_ALL calls because the given host is still on the run-time notify list (rtnl) and the check flag is set when xunlink() is called. But the next thing the caller of xunlink() does is remove the host from the rtnl list which means the unlink will never happen. So this patch removes the check flag from xunlink() since its not needed and correctly allocates and frees memory used by xunlink(). Signed-off-by: Steve Dickson <steved@redhat.com> commit f846abde5faa4742b4823fa981080b1f5dac66b1 Author: Chuck Lever <chuck.lever@oracle.com> Date: Wed Dec 17 14:42:14 2008 -0500 sm-notify command: fix a use-after-free bug The recv_reply() function was referencing host->ai in a freeaddrinfo(3) call after it had freed @host. This is not likely to be harmful in a single-threaded user context, but it's still bad form, and it will get called out if testing sm-notify with poisoned free memory. The less noise, the better we are able to see real problems. Signed-off-by: Chuck Lever <chuck.lever@oracle.com> Signed-off-by: Steve Dickson <steved@redhat.com> commit 3f23f712477df48fd1d57376b65c44bb2a19ec16 Author: Chuck Lever <chuck.lever@oracle.com> Date: Wed Dec 17 14:23:43 2008 -0500 text-based mount command: use po_get_numeric() forhandling retry Replace the logic in nfs_parse_retry_option() with a call to the new po_get_numeric() function. Signed-off-by: Chuck Lever <chuck.lever@oracle.com> Signed-off-by: Steve Dickson <steved@redhat.com> commit b5009d23525181846777349f2fc0e4a72b89d24d Author: Chuck Lever <chuck.lever@oracle.com> Date: Wed Dec 17 14:21:10 2008 -0500 text-based mount command: add function to parse numericmount options Introduce a function that is especially for parsing keyword mount options that take a numeric value. Signed-off-by: Chuck Lever <chuck.lever@oracle.com> Signed-off-by: Steve Dickson <steved@redhat.com> commit eb3a145789b9eedd39b56e1d76f412435abaa747 Author: Kevin Coffman <kwc@citi.umich.edu> Date: Thu Dec 11 11:43:31 2008 -0500 svcgssd: use the actual context expiration for cache Instead of sending down an infinite expiration value for the rsi(init) and rsc(context) cache entries, use a reasonable value for the rsi cache, and the actual context expiration value for the rsc cache. Prompted by a proposal from Neil Brown as a result of a complaint of a server running out of kernel memory when under heavy load of rpcsec_gss traffic. Neil's original patch used one minute for the init cache and one hour for the context cache. Using the actual expiration time prevents unnecessary context re-negotiation. Signed-off-by: Kevin Coffman <kwc@citi.umich.edu> Signed-off-by: Steve Dickson <steved@redhat.com> commit a4f1386224310b6797f083826fc4b6751e91f9b6 Author: Kevin Coffman <kwc@citi.umich.edu> Date: Thu Dec 11 11:39:38 2008 -0500 gssd/svcgssd: add support to retrieve actual context expiration Add some plumbing so that the context expiration can be returned while serializing the information. Later patch(es) will actually get the expiration and pass it down to the kernel. Signed-off-by: Kevin Coffman <kwc@citi.umich.edu> Signed-off-by: Steve Dickson <steved@redhat.com> commit 8a5ef964599438ea45f849a0cd1431a0c26bf054 Author: Chuck Lever <chuck.lever@oracle.com> Date: Thu Dec 11 10:30:20 2008 -0500 mount command: AF_INET6 support for probe_bothports() Introduce an AF_INET6 capable probe_bothports() API. This means replacing "struct sockaddr_in *" arguments with a "struct sockaddr *" and a socklen_t arguments. These functions often combine a "struct sockaddr_in" and a "struct pmap" into a single "clnt_addr_t" argument. Instead of modifying "clnt_addr_t" and all the legacy code that uses it, I'm going to create a new probe_bothports() API for the text-based mount command that takes a "struct sockaddr *" and sockaddr length, and leave the existing probe_bothports() interface, which takes "clnt_addr_t" arguments, for legacy use. Signed-off-by: Chuck Lever <chuck.lever@oracle.com> Signed-off-by: Steve Dickson <steved@redhat.com> commit 299a990de1b16ff769201fa0ed38249853254497 Author: Chuck Lever <chuck.lever@oracle.com> Date: Thu Dec 11 10:28:57 2008 -0500 mount command: support AF_INET6 in probe_nfsport() and probe_mntport() Flesh out support for AF_INET6 in the intermediate helper functions probe_nfsport() and probe_mntport(). Signed-off-by: Chuck Lever <chuck.lever@oracle.com> Signed-off-by: Steve Dickson <steved@redhat.com> commit 71433fbcb0e3142e2b555727197f480d24761d7e Author: Chuck Lever <chuck.lever@oracle.com> Date: Thu Dec 11 10:27:34 2008 -0500 mount command: full support for AF_INET6 addresses in probe_port() Now that probe_port() uses an AF_INET6-capable rpcbind query and RPC ping, finish updating probe_port() to support AF_INET6 addresses fully. Signed-off-by: Chuck Lever <chuck.lever@oracle.com> Signed-off-by: Steve Dickson <steved@redhat.com> commit 5d8b800b8438222a55c4698c86b558b15717aa21 Author: Steve Dickson <steved@redhat.com> Date: Sat Dec 6 08:31:29 2008 -0500 sm-notify: always exiting without any notification Added curly brackets around the record_pid() check which stop sm-notify from exiting when a pid file does not exist. Signed-off-by: Steve Dickson <steved@redhat.com> commit b8711a0665b9ecff9d59ee36d756f50823242f64 Author: Chuck Lever <chuck.lever@oracle.com> Date: Tue Dec 2 07:43:54 2008 -0500 mount command: remove local getport() implementation Eliminate local getport() implementation from utils/mount/network.c, as it is no longer used. Signed-off-by: Chuck Lever <chuck.lever@oracle.com> Signed-off-by: Steve Dickson <steved@redhat.com> commit cc58ba0c98b2f687810a5af9e6185bcc5e855fb0 Author: Chuck Lever <chuck.lever@oracle.com> Date: Tue Dec 2 07:43:01 2008 -0500 mount command: Replace clnt_ping() and getport() calls inprobe_port() Update the mount command's probe_port() function to call the new shared rpcbind query and RPC ping functions. This provides immediate support for rpcbind v3/v4 queries, and paves the way for supporting AF_INET6 in the probe_bothports() path. Signed-off-by: Chuck Lever <chuck.lever@oracle.com> Signed-off-by: Steve Dickson <steved@redhat.com> commit 14b0dae49afae3fcf05c19ae84829aeef2f6876e Author: Chuck Lever <chuck.lever@oracle.com> Date: Tue Dec 2 07:40:16 2008 -0500 mount command: Use nfs_error() instead of perror() So we can ensure that error output is directed appropriately, use nfs_error() instead of perror() in start_statd(). Signed-off-by: Chuck Lever <chuck.lever@oracle.com> Signed-off-by: Steve Dickson <steved@redhat.com> commit ea0473feffd8071216c96217df3202a8deed2c65 Author: Chuck Lever <chuck.lever@oracle.com> Date: Tue Dec 2 07:39:06 2008 -0500 mount command: Use nfs_pmap_getport() in probe_statd() Repace the getport() and clnt_ping() calls in probe_statd() with their new shared equivalents. Signed-off-by: Chuck Lever <chuck.lever@oracle.com> Signed-off-by: Steve Dickson <steved@redhat.com> commit 33bbeabb40d11a59266e0702adaa6a2e0acb6382 Author: Neil Brown <neilb@suse.de> Date: Wed Nov 26 12:01:06 2008 -0500 Ensure statd gets started if required when non-root user mounts an NFS filesystem. The first time an NFS filesystem is mounted, we start statd from /sbin/mount.nfs. If this first time is a non-root user doing the mount, (thanks to e.g. the 'users' option in /etc/fstab) then we need to be sure that the 'setuid' status from mount.nfs is inherited through to rpc.statd so that it runs as root. There are two places where we loose our setuid status due to the shell (/bin/sh) discarding. 1/ mount.nfs uses "system" to run /usr/sbin/start-statd. This runs a shell which is likely to drop privileges. So change that code to use 'fork' and 'execl' explicitly. 2/ start-statd is a shell script. To convince the shell to allow the program to run in privileged mode, we need to add a "-p" flag. We could just call setuid(getuid()) at some appropriate time, and it might be worth doing that as well, however I think that getting rid of 'system()' is a good idea and once that is done, the adding of '-p' is trivial and sufficient. Signed-off-by: Neil Brown <neilb@suse.de> Signed-off-by: Steve Dickson <steved@redhat.com> commit 068ea89e7d335d381276a2fff73d5abbb2b0a04d Author: Neil Brown <neilb@suse.de> Date: Wed Nov 26 08:48:03 2008 -0500 gssd: unblock DNOTIFY_SIGNAL in case it was blocked. I have a situation where rpc.gssd appears to not be working. Mount attempts which need to communicate with it block. I've narrowed down the problem to that fact that all realtime signals have been blocked. This means that DNOTIFY_SIGNAL (which is a realtime signal) is never delivered, so gssd never rescans the rpc_pipe/nfs directory. It seems start_kde (or whatever it is called) and all descendants have these signals blocked. xfce seems to do the same thing. gnome doesn't. So if you start rpc.gssd from a terminal window while logged in via KDE, it doesn't behave as expected. Signed-off-by: Neil Brown <neilb@suse.de> Signed-off-by: Steve Dickson <steved@redhat.com> commit f7020bd5d3ffca280690c6beba5fecdeb4d305f7 Author: Chuck Lever <chuck.lever@oracle.com> Date: Tue Nov 25 08:39:47 2008 -0500 showmount command: support querying IPv6 servers Introduce a version of nfs_get_mount_client() that supports AF_INET6 and AF_INET server addresses. If the TI-RPC library is not available when the showmount command is built, fall back to the legacy RPC user-space API. Signed-off-by: Chuck Lever <chuck.lever@oracle.com> Signed-off-by: Steve Dickson <steved@redhat.com> commit 1c96846ba3adeb59a61e0cf33cf4c94c0678853f Author: Chuck Lever <chuck.lever@oracle.com> Date: Tue Nov 25 08:38:01 2008 -0500 showmount command: move logic to acquire RPC clienthandle out of main() In preparation to support IPv6 in the showmount command, extract the logic that parses/acquires the target hostname and converts it into an RPC client handle to contact the remote mountd service, and move it into its own function. Signed-off-by: Chuck Lever <chuck.lever@oracle.com> Signed-off-by: Steve Dickson <steved@redhat.com> commit e358039c9ffa8a4ead342e8a0cf0ff51a3a21af4 Author: Chuck Lever <chuck.lever@oracle.com> Date: Tue Nov 25 08:35:10 2008 -0500 showmount command: Remove unused local getport() implementation Clean up: remove showmount.c's local getport() implementation, now that the showmount command uses the shared one. Signed-off-by: Chuck Lever <chuck.lever@oracle.com> Signed-off-by: Steve Dickson <steved@redhat.com> commit bb3e50bd5c4f6bf94221ef69d4dc87e73d0e474b Author: Chuck Lever <chuck.lever@oracle.com> Date: Tue Nov 25 08:15:51 2008 -0500 showmount command: call nfs_getport instead of local getport Have the showmount command invoke the shared nfs_getport() function instead of its own local version. This gives the showmount command immediate support for querying via rpcbindv3/v4 in addition to portmapper, and sets the stage for AF_INET6 support in showmount. Signed-off-by: Chuck Lever <chuck.lever@oracle.com> Signed-off-by: Steve Dickson <steved@redhat.com> commit 9888a72c18c0798b0fd352f02d5985aa75637743 Author: Steve Dickson <steved@redhat.com> Date: Tue Nov 18 12:59:41 2008 -0500 Added support/nfs/getport.c Signed-off-by: Steve Dickson <steved@redhat.com> commit 541bf913ec64dee719b34d2a6850fcfee550e6c0 Author: Chuck Lever <chuck.lever@oracle.com> Date: Mon Nov 17 16:13:48 2008 -0500 Introduce rpcbind client utility functions It turns out that at least the mount command and the showmount command need to query a server's rpcbind daemon. They need to query over AF_INET6 as well as AF_INET. libtirpc provides an rpcbind query capability with the rpcb_getaddr(3) interface, but it takes a hostname and netconfig entry rather than a sockaddr and a protocol type, and always uses a lengthy timeout. The former is important to the mount command because it sometimes must operate using a specific port and IP address rather than depending on rpcbind and DNS to convert a [hostname, RPC program, netconfig] tuple to a [socket address, port number, transport protocol] tuple. The rpcb_getaddr(3) API also always uses a privileged port (at least for setuid root executables like mount.nfs), which is not required for an rpcbind query. This can exhaust the local system's reserved port space quickly. This patch provides a reserved-port-friendly AF_INET6-capable rpcbind query C API that can be shared among commands and tools in nfs-utils, and allows a query to a specified socket address and port rather than a hostname. In addition to an rpcbind query interface, this patch also provides a facility to ping the remote RPC service to ensure that it is operating as advertised by rpcbind. It's useful to combine an RPC ping with an rpcbind query because in many cases, components of nfs-utils already ping an RPC service immediately after receiving a successful GETPORT result. There are also a handful of utility routines provided, such as a functions that can map between [sockaddr, port] and a universal address. I've made an attempt to make these new functions build and operate on systems that do not have libtirpc. Signed-off-by: Chuck Lever <chuck.lever@oracle.com> Signed-off-by: Steve Dickson <steved@redhat.com> commit 162cbdd19830abaf6a3fd64a22839023ce99185d Author: Chuck Lever <chuck.lever@oracle.com> Date: Mon Nov 17 16:08:03 2008 -0500 Add AF_INET6-capable API to acquire an RPCCLIENT * Provide a simple interface that any component of nfs-utils can use to acquire an RPC CLIENT *. This is an AF_INET6-enabled API, and can also handle PF_LOCAL sockets if libtirpc is present on the system. When libtirpc is not available, legacy RPC services will be used instead, and an attempt to connect to an AF_INET6 address will fail. Signed-off-by: Chuck Lever <chuck.lever@oracle.com> Signed-off-by: Steve Dickson <steved@redhat.com> commit 971b780d47558e4688316b6b35bb15989b1541d0 Author: Jan Engelhardt <jengelh@medozas.de> Date: Tue Oct 21 09:34:58 2008 -0400 Get rid of empty AUTHORS file build: remove redundant AUTHORS file One can use the --foreign automake option to make it not enforce presence of an AUTHORS file. Signed-off-by: Jan Engelhardt <jengelh@medozas.de> Signed-off-by: Steve Dickson <steved@redhat.com>
commit c8d18e26d2a53d9036a32c2dafebccaf4ce1634d Author: Phil Endecott <phil_bnaqb_endecott@chezphil.org> Date: Tue Oct 14 14:36:58 2008 -0400 sm-notify should exit as soon as its determined there are no hosts to notify. This also decreases start up time by a few seconds. Signed-off-by: Steve Dickson <steved@redhat.com> commit fd705586d3ec76a5b324db151b87be1e4514f8af Author: Mike Frysinger <vapier@gentoo.org> Date: Wed Oct 8 11:08:55 2008 -0400 rpcgen: include sys/ioctl.h on linux systems The rpcgen tool included with nfs-utils will generate calls to ioctl() but not actually generate the sys/ioctl.h header include. Attached patch should fix this. Signed-off-by: Mike Frysinger <vapier@gentoo.org> Signed-off-by: Steve Dickson <steved@redhat.com> commit 4bd5ab69e5aa8bac905409eff111dbbc24581973 Author: Chuck Lever <chuck.lever@oracle.com> Date: Wed Oct 8 10:59:53 2008 -0400 nfs(5): Clarify behavior of the mountproto= and proto= options Document the interaction between the mountproto= and the proto= mount options in a new subsection of nfs(5). Signed-off-by: Chuck Lever <chuck.lever@oracle.com> Signed-off-by: Steve Dickson <steved@redhat.com> commit 695906482ffc0c3778c3df765cf980d19da25414 Author: Chuck Lever <chuck.lever@oracle.com> Date: Wed Oct 8 10:45:12 2008 -0400 nfs-utils: make makesock() static Clean up: The makesock() function can become static since it is only used in rpcmisc.c, where it is defined. Fix some minor nits while we're in the area: o Move it so we can remove it's forward declaration. o Get rid of unneeded newlines in the xlog() format strings. o Use htonl(INADDR_ANY) instead of INADDR_ANY to initialize sin_addr. Should make no run-time difference, but is slightly more proper, as the standard definition of INADDR_ANY is in host byte-order. o Remove the parentheses in the "return" statements. Signed-off-by: Chuck Lever <chuck.lever@oracle.com> Signed-off-by: Steve Dickson <steved@redhat.com> commit 6e419afa493acc1c88fbc4d1a27bfb1784c1297a Author: Chuck Lever <chuck.lever@oracle.com> Date: Wed Oct 8 10:42:41 2008 -0400 nfs-utils: Clean up support/nfs/rpcmisc.c:closedown() Clean up: update closedown()'s synopsis to modern C style, and move the function so we can remove the forward declaration. Signed-off-by: Chuck Lever <chuck.lever@oracle.com> Signed-off-by: Steve Dickson <steved@redhat.com> commit b803949b6e3025f231e325562ec729a7080af435 Author: Steve Dickson <steved@redhat.com> Date: Wed Oct 1 14:36:25 2008 -0400 Cleaned up the wording in the rpc.nfsd(8) manpage (BZ: https://bugzilla.linux-nfs.org/show_bug.cgi?id=159) Signed-off-by: Steve Dickson <steved@redhat.com> commit a339207222ba3e31ad191b18af9f82d6a4ada0ee Author: Steve Dickson <steved@redhat.com> Date: Wed Oct 1 14:30:12 2008 -0400 Cleared up a contradiction in the export(5) man page (BZ: https://bugzilla.linux-nfs.org/show_bug.cgi?id=161) Signed-off-by: Steve Dickson <steved@redhat.com> commit 6fdba8870cc40a2f40ed87c4b3563e8b29ad124c Author: Jeff Layton <jlayton@redhat.com> Date: Mon Sep 29 10:20:57 2008 -0400 mountd: change "unknown host" error message to "unmatched host" mount request from unknown host 10.11.14.99 for /export The hosts are listed in DNS with proper reverse records, so the reason why the host is "unknown" isn't clear. This patch just changes the wording of this error to hopefully make it more clear why the mount request was rejected. This also makes this error message use a format more similar to the other error messages in auth_authenticate(). Signed-off-by: Jeff Layton <jlayton@redhat.com> Signed-off-by: Steve Dickson <steved@redhat.com> commit 8f1abb8ab1f7afcb9c2c0c094255d7e438b57b09 Author: Chuck Lever <chuck.lever@oracle.com> Date: Mon Sep 29 07:52:40 2008 -0400 nfs(5): Replace the term "netid" in mount option descriptions TI-RPC introduced the concept of "netid" which is a string that is mapped to a set of transport capabilities via a netconfig database. RPC services register a netid and bindaddr with their local rpcbind daemon to advertise their ability to support particular transports. Mike Eisler noted that the use of the term "netid" in nfs(5) is not appropriate, since Linux does not treat the value of the proto= or mountproto= options as a netid proper, but rather to select a particular transport capability provided locally on the client. The Linux NFS client currently uses a simple internal mapping between these names and its own transport capabilities rather than using the names as part of an rpcbind query, thus these strings are really not netids. They are more akin to what TI-RPC calls "protocol names". Remove the term "netid" from nfs(5) for now. Signed-off-by: Chuck Lever <chuck.lever@oracle.com> Cc: Mike Eisler <mike.eisler@netapp.com> Signed-off-by: Steve Dickson <steved@redhat.com> commit 4b3c476a3dd3a1fa7d6b1ff2a91406c30775208d Author: Chuck Lever <chuck.lever@oracle.com> Date: Mon Sep 29 07:34:59 2008 -0400 nfs(5): Replace the term "netid" in mount option descriptions Mike Eisler noted that the use of the term "netid" in the descriptions of the "proto=" option is not appropriate, since Linux does not allow "udp6" or "tcp6". Replaced the term "netid" with "transport" in nfs(5). Signed-off-by: Chuck Lever <chuck.lever@oracle.com> Signed-off-by: Tom Talpey <Thomas.Talpey@netapp.com> Signed-off-by: Steve Dickson <steved@redhat.com> commit 572efae32f6fb311dff0e065d0d1dd527db60d0c Author: Chuck Lever <chuck.lever@oracle.com> Date: Fri Sep 26 16:16:09 2008 -0400 rpc.statd: Stop overloading sockfd in utils/statd/rmtcall.c The Linux kernel's lockd requires that rpc.statd perform notification callbacks from a privileged source port. To guarantee rpc.statd gets a privileged source port but runs unprivileged, it calls statd_get_socket() then drops root privileges before starting it's svc request processing loop. Statd's svc request loop is the only caller of the process_foo() functions in utils/statd/rmtcall.c, but one of them, process_notify_list() attempts to invoke statd_get_socket() again. In today's code, this is unneeded because statd_get_socket() is always invoked before my_svc_run(). However, if it ever succeeded, it would get an unprivileged source port anyway, causing the kernel to reject all subsequent requests from statd. Thus the process_notify_list() function should not ever call statd_get_socket() because root privileges have been dropped by this point, and statd_get_socket() wouldn't get a privileged source port, causing the kernel to reject all subsequent SM_NOTIFY requests. So all of the process_foo functions in utils/statd/rmtcall.c should use the global sockfd instead of a local copy, as it already has a privileged source port. I've seen some unexplained behavior where statd starts making calls to the kernel via an unprivileged port. This could be one way that might occur. Signed-off-by: Chuck Lever <chuck.lever@oracle.com> Signed-off-by: Steve Dickson <steved@redhat.com> commit 7bc7c11507c853b8835e9f2ad758b8958c5607af Author: Chuck Lever <chuck.lever@oracle.com> Date: Fri Sep 26 16:14:49 2008 -0400 rpc.statd: Use __func__ in dprintf Clean up: The named function in many of the debugging messages in utils/statd/rmtcall.c is out of date. To prevent this from happening in the future, replace these with __func__. Also, note() and dprintf() do not require a terminating '\n' in their format string. So make all invocations consistent. Signed-off-by: Chuck Lever <chuck.lever@oracle.com> Signed-off-by: Steve Dickson <steved@redhat.com> commit 9b13713fa592b02da0dc79c5505fdf7002155d13 Author: Chuck Lever <chuck.lever@oracle.com> Date: Fri Sep 26 16:13:45 2008 -0400 rpc.statd: Clean up: replace "if (!(foo = rtnl))". Static code checkers flag this kind of thing because it's easy to confuse with "if (!(foo == rtnl))". In one of these cases, the combination of evaluation and assignment isn't even necessary. While we are in the neighborhood, remove an extra argument to note() that is not called for in the passed-in format string. Signed-off-by: Chuck Lever <chuck.lever@oracle.com> Signed-off-by: Steve Dickson <steved@redhat.com> commit 2fd04076023d696e5e7ffa17998e9d32990e57bf Author: Chuck Lever <chuck.lever@oracle.com> Date: Fri Sep 26 16:12:49 2008 -0400 nfs-utils: whitespace clean ups in support/nfs/rpcmisc.c Clean up: fix a few spurious white space issues in support/nfs/rpcmisc.c. Signed-off-by: Chuck Lever <chuck.lever@oracle.com> Signed-off-by: Steve Dickson <steved@redhat.com> commit ec2e72c3e6f13dfa049598427c56115f1cbed16c Author: Chuck Lever <chuck.lever@oracle.com> Date: Fri Sep 26 16:11:57 2008 -0400 nfs-utils: Remove excess log reporting Clean up: The makesock() function already reports an error if it can't create a socket. Remove the redundant error check and logging done in rpc_init() after a makesock() call. Signed-off-by: Chuck Lever <chuck.lever@oracle.com> Signed-off-by: Steve Dickson <steved@redhat.com> commit 173f4c79c08a947742970a5e12d529249c2c3631 Author: Chuck Lever <chuck.lever@oracle.com> Date: Fri Sep 26 16:10:48 2008 -0400 nfs-utils: make makesock() static Clean up: The makesock() function can become static since it is only used in rpcmisc.c, where it is defined. Fix some minor nits while we're in the area: o Move it so we can remove it's forward declaration. o Get rid of unneeded newlines in the xlog() format strings. o Use htonl(INADDR_ANY) instead of INADDR_ANY to initialize sin_addr. Should make no run-time difference, but is slightly more proper, as the standard definition of INADDR_ANY is in host byte-order. o Remove the parentheses in the "return" statements. Signed-off-by: Chuck Lever <chuck.lever@oracle.com> Signed-off-by: Steve Dickson <steved@redhat.com> commit 7de004227d2a95ac10a591a68f95057a242d8dc0 Author: Chuck Lever <chuck.lever@oracle.com> Date: Fri Sep 26 16:03:27 2008 -0400 showmount: destroy RPC client when finished Clean up: call clnt_destroy() in the showmount command as needed to destroy the RPC client properly (and close the associated socket) before the program exits. Signed-off-by: Chuck Lever <chuck.lever@oracle.com> Signed-off-by: Steve Dickson <steved@redhat.com> commit a663cf4c59e9b4fa56d8ca976c582ccf929140d2 Author: Chuck Lever <chuck.lever@oracle.com> Date: Fri Sep 26 13:28:10 2008 -0400 nfs-utils: remove disabled code from support/nfs/rpcmisc.c After some recent discussions, we want to rely on the kernel's network layer to autotune socket buffers. Since this code is already disabled in support/nfs/rpcmisc.c (and has been for some time), let's just remove it. Signed-off-by: Chuck Lever <chuck.lever@oracle.com> Signed-off-by: Steve Dickson <steved@redhat.com> commit 06d0b0c9d3f1727d6a7f51d9edd7c3e7c38a293a Author: Chuck Lever <chuck.lever@oracle.com> Date: Fri Sep 26 13:27:23 2008 -0400 nfs-utils: Remove unused function rpc_svcrun() Clean up: remove function that has been disabled (via #if 0) for almost a decade. Signed-off-by: Chuck Lever <chuck.lever@oracle.com> Signed-off-by: Steve Dickson <steved@redhat.com> commit 7e76a0509947d9b906f25cf762b0aac1a3281809 Author: Chuck Lever <chuck.lever@oracle.com> Date: Fri Sep 26 13:26:23 2008 -0400 nfs-utils: remove unused function rpc_logcall() Clean up: Eliminate rpc_logcall(), which has no callers. Signed-off-by: Chuck Lever <chuck.lever@oracle.com> Signed-off-by: Steve Dickson <steved@redhat.com> commit 69620a042d1151871a31f07ccd210b2dab49c628 Author: Chuck Lever <chuck.lever@oracle.com> Date: Fri Sep 26 13:25:19 2008 -0400 sm-notify command: use static function definitions Clean up. The sm-notify command is built from a single source file. Some of its internal functions are appropriately defined as static. However, some are declared static, but defined as global. Some are declared and defined as global. None of them are used outside of utils/statd/sm-notify.c. Make all the internal functions in utils/statd/sm-notify.cstatic. Signed-off-by: Chuck Lever <chuck.lever@oracle.com> Signed-off-by: Steve Dickson <steved@redhat.com> commit 93e355bf3a07b7565d88c1139ff24d1eb4f0a275 Author: Chuck Lever <chuck.lever@oracle.com> Date: Fri Sep 26 13:24:24 2008 -0400 sm-notify command: replace nsm_address typedef Clean up: replace "typedef struct sockaddr_storage nsm_address" with standard socket address types. This makes sm-notify.c consistent with other parts of nfs-utils, and with typical network application coding conventions. Signed-off-by: Chuck Lever <chuck.lever@oracle.com> Signed-off-by: Steve Dickson <steved@redhat.com> commit 7862a784c2990b1f5330959d30069a637a041715 Author: Chuck Lever <chuck.lever@oracle.com> Date: Fri Sep 26 13:23:18 2008 -0400 sm-notify command: clean up error logging Clean up a few issues with logging in sm-notify.c. Sometimes in sm-notify, when a system call fails the problem is reported to stderr but not logged, and then usually sm-notify exits. In cases like this, there are probably more hosts to notify, but sm-notify dies silently. Make sure these errors are logged, and that the log messages explain the nature of the problem. Also, if sm-notify exits prematurely, make sure this is always reported at the LOG_ERR level, not at the LOG_WARNING level. Remove a couple of unnecessary '\n' in the arguments of nsm_log() calls -- nsm_log() already appends an '\n' to the message. Finally, use exit() consistently in main(). Signed-off-by: Chuck Lever <chuck.lever@oracle.com> Signed-off-by: Steve Dickson <steved@redhat.com> commit e36a9e8af8bba0ff661da3c8dc0656bfe9952767 Author: Chuck Lever <chuck.lever@oracle.com> Date: Fri Sep 26 13:21:43 2008 -0400 sm-notify command: getaddrinfo(3) addrinfo leak Make sure the results of getaddrinfo(3) are properly freed in notify(). Note this is a one-time addrinfo allocation that would be automatically freed when sm-notify exits anyway, so this is more of a nit than a real bug fix. Signed-off-by: Chuck Lever <chuck.lever@oracle.com> Signed-off-by: Steve Dickson <steved@redhat.com> commit 37130ec4041bd703d706207d77b4398ea252be5a Author: Chuck Lever <chuck.lever@oracle.com> Date: Fri Sep 26 13:20:49 2008 -0400 sm-notify command: include <config.h> Clean up: Include config.h as other source files do; instead of using "config.h" use the HAVE_CONFIG_H macro and include <config.h>. Signed-off-by: Chuck Lever <chuck.lever@oracle.com> Signed-off-by: Steve Dickson <steved@redhat.com> commit 44d18e8887cd2fdcf4996ddcbb827ed19aca8b2d Author: Chuck Lever <chuck.lever@oracle.com> Date: Fri Sep 26 13:18:11 2008 -0400 showmount command: clean up error returns from connect_nb() Clean up connect_nb() in the showmount command. Sometimes it returns -1 on error, and sometimes a negative errno. On error, it should always return one of these or the other, not both. Similar functions in other parts of nfs-utils return -1 on error, and set errno; so let's do that here too. Signed-off-by: Chuck Lever <chuck.lever@oracle.com> Signed-off-by: Steve Dickson <steved@redhat.com> commit 18c6c616e07ec4fcd27108d87b6f02280d9687d6 Author: Chuck Lever <chuck.lever@oracle.com> Date: Fri Sep 26 12:42:45 2008 -0400 rpc.statd: eliminate --secure_statd Clean up: Remove RESTRICTED_STATD to help make IPv6 changes simpler. We keep the code behind RESTRICTED_STATD, and toss anything that is compiled out when it is set. RESTRICTED_STATD was added almost 10 years ago in response to CERT CERT CA-99.05, which addresses exposures in rpc.statd that might allow an attacker to take advantage of buffer overflows in rpc.statd while it is running in privileged mode. These days, I can't think of a reason why anyone would want to run rpc.statd without setting RESTRICTED_STATD. In addition, I don't think rpc.statd is ever tested without it. Removing RESTRICTED_STATD will get rid of some address storage and comparison issues that will make IPv6 support simpler. Plus it will make our test matrix smaller! Signed-off-by: Chuck Lever <chuck.lever@oracle.com> Acked-by: Neil Brown <neilb@suse.de> Signed-off-by: Steve Dickson <steved@redhat.com> commit 4ac04d76dc0fffe48313d6a16b4ca9b44c135818 Author: Chuck Lever <chuck.lever@oracle.com> Date: Fri Sep 26 12:39:13 2008 -0400 rpc.tatd: refactor check to see if call is fromloopback address Refactor common logic to check if SM_FOO request is from loopback address. We'll have to do something about this for IPv6. On IPv6-capable systems, there will be only one AF_INET6 listener. The loopback caller will get either an IPv6 loopback address, or a mapped IPv4 loopback -- either way this will be an AF_INET6 address. Signed-off-by: Chuck Lever <chuck.lever@oracle.com> Acked-by: Neil Brown <neilb@suse.de> Signed-off-by: Steve Dickson <steved@redhat.com> commit 92e4d5c342f15940362fc2b2df19df0893f0dd13 Author: Neil Brown <neilb@suse.de> Date: Thu Aug 28 11:32:33 2008 -0400 mount: enable retry for nfs23 to set the correct protocol for mount. Use a connected port when talking to portmap via UDP. This allows us to get ICMP errors reported back so we can avoid timeouts. Also catch the error (RPC_CANTRECV) properly in getport. Signed-off-by: NeilBrown <neilb@suse.de> Signed-off-by: Steve Dickson <steved@redhat.com> commit 83a8da644b553680e9d578843a6fa0fc9347af0e Author: J. Bruce Fields <bfields@citi.umich.edu> Date: Thu Aug 28 11:25:29 2008 -0400 Remove idmapd.conf The example idmapd.conf file is kept in libnfsidmap now, which is what's responsible for parsing it anyway. Signed-off-by: J. Bruce Fields <bfields@citi.umich.edu> Signed-off-by: Steve Dickson <steved@redhat.com> commit 603017f2c1587d760e2649b889b581ca267ffee7 Author: J. Bruce Fields <bfields@citi.umich.edu> Date: Thu Aug 28 11:23:05 2008 -0400 Determine supported pseudoflavors from export Instead of using a static list of supported flavors, we should be taking the list from the export. Signed-off-by: J. Bruce Fields <bfields@citi.umich.edu> Signed-off-by: Steve Dickson <steved@redhat.com> commit 60107345a32982bb0ff9eb8a17f8f0edf0276a98 Author: J. Bruce Fields <bfields@citi.umich.edu> Date: Thu Aug 28 11:20:58 2008 -0400 Minor mountd.c cleanup I find it more readable to have the normal (non-error) case unindented, and to keep conditionals relatively simple, as is the usual kernel style. Fix some inconsistent indentation while we're there. Signed-off-by: J. Bruce Fields <bfields@citi.umich.edu> Signed-off-by: Steve Dickson <steved@redhat.com> commit 124b74413e943ab9c02cdff2832d1d81dc9fda87 Author: J. Bruce Fields <bfields@citi.umich.edu> Date: Thu Aug 28 11:17:34 2008 -0400 Remove redundant m_path field Contrary to the comment above its definition, the field m_path always has the same value as e_path: the *only* modifications of m_path are all of the form: strncpy(exp->m_export.m_path, exp->m_export.e_path, sizeof (exp->m_export.m_path) - 1); exp->m_export.m_path[sizeof (exp->m_export.m_path) - 1] = '\0'; So m_path is always just a copy of e_path. In places where we need to store a path to a submount of a CROSSMNT-exported filesystem, as in cache.c, we just use a local variable. Signed-off-by: J. Bruce Fields <bfields@citi.umich.edu> Signed-off-by: Steve Dickson <steved@redhat.com> commit ec16220910f0bf1bf2b8e1d50e78df7da11d8b1e Author: David Woodhouse <David.Woodhouse@intel.com> Date: Thu Aug 28 11:07:53 2008 -0400 Stop exportfs warning about needing fsid, when we actually have one Signed-off-by: David Woodhouse <David.Woodhouse@intel.com> Signed-off-by: Steve Dickson <steved@redhat.com> commit 3a340251597a5b0c579c31d8caf9aa3b53a77016 Author: David Woodhouse <David.Woodhouse@intel.com> Date: Thu Aug 28 11:05:17 2008 -0400 Use fsid from statfs for UUID if blkid can't cope (or not used) Signed-off-by: David Woodhouse <David.Woodhouse@intel.com> Signed-off-by: Steve Dickson <steved@redhat.com> commit 8d52fc2691783dc9ef5bd9d9a1fa4c0ec33b20bc Author: David Woodhouse <David.Woodhouse@intel.com> Date: Thu Aug 28 10:56:57 2008 -0400 Explicit UUID handling doesn't require blkid; factor out get_uuid_blkdev() Signed-off-by: David Woodhouse <David.Woodhouse@intel.com> Signed-off-by: Steve Dickson <steved@redhat.com> commit 0ae97c5b87a56870e74a74ae50aeb2ae0e496907 Author: David Woodhouse <David.Woodhouse@intel.com> Date: Thu Aug 28 10:29:54 2008 -0400 Fix handling of explicit uuid Fix a couple of bugs which show up if you try to explicitly set a 16-byte UUID when exporting a file system. First, exportfs cuts the first two bytes off the UUID and writes something invalid to etab. Second, mountd writes the _ascii_ form of the UUID to the kernel, instead of converting it to hex. Signed-off-by: David Woodhouse <David.Woodhouse@intel.com> Signed-off-by: Steve Dickson <steved@redhat.com> commit 86c3a79a108091fe08869a887438cc2d4e1126ed Author: Neil Brown <neilb@suse.de> Date: Wed Aug 27 16:30:19 2008 -0400 mount issue with Mac OSX and --manage-gids, client hangs Make sure are zero len group list is sent down to the kernel when the gids do not exist on the server. Tested-by: Alex Samad <alex@samad.com.au> Signed-off-by: Neil Brown <neilb@suse.de> Signed-off-by: Steve Dickson <steved@redhat.com> commit 2d173a587a7dbee81ffaf246d044f384fb6487c8 Author: Chuck Lever <chuck.lever@oracle.com> Date: Thu Jul 31 05:24:18 2008 -0400 mount.nfs command: old glibc missing some flags Old versions of glibc (< 2.4) have a getaddrinfo(3) implementation, but do not include public definitions of the AI_V4MAPPED, AI_ALL, and AI_ADDRCONFIG flags because it was believed that these flags were not standardized. However, these flags have standard definitions both in POSIX 1003 and in RFCs, and were thus included in later releases of glibc. To allow the mount.nfs command to build on systems with these older versions of glibc, add conditional definitions for these flags in utils/mount/network.c. Signed-off-by: Chuck Lever <chuck.lever@oracle.com> Signed-off-by: Steve Dickson <steved@redhat.com>
Copyright © 2009 Geeknet, Inc. All rights reserved. Terms of Use
Thanks for your rating!
Would you also like to write a review?