summaryrefslogtreecommitdiffstats
path: root/utils
Commit message (Collapse)AuthorAgeFilesLines
* nfsdcld: add routines for a sqlite backend databaseJeff Layton2012-04-264-8/+298
| | | | | | | | | | | | | | | | | | | | Rather than roll our own "storage engine", use sqlite instead. It fits the bill nicely as it does: - durable on-disk storage - the ability to constrain record uniqueness - a facility for collating and searching the host records ...it does add a build dependency to nfs-utils, but almost all modern distros provide those packages. The current incarnation of this code dynamically links against a provided sqlite library, but we could also consider including their single-file "amalgamation" to reduce dependencies (though with all the caveats that that entails). Signed-off-by: Jeff Layton <jlayton@redhat.com> Signed-off-by: Steve Dickson <steved@redhat.com>
* nfsdcld: add client tracking daemon stubJeff Layton2012-04-263-0/+292
| | | | | | | | | | | | This program opens and "listens" on the new nfsd/cld rpc_pipefs pipe. The code here doesn't actually do anything on stable storage yet. That will be added in a later patch. The patch also adds a autoconf enable switch for the new daemon that defaults to "no", and a test for the upcall description header file. Signed-off-by: Jeff Layton <jlayton@redhat.com> Signed-off-by: Steve Dickson <steved@redhat.com>
* Add -l option to gssd to force legacy behaviourMichael Weiser2012-04-164-4/+40
| | | | | | | | | | Implement a new option -l to force gssd to ignore its kernel's crypto capabilities and use just the Single DES legacy encryption types to be compatible with old servers. This is only relevant if those servers have strong keys in their keytab. Signed-off-by: Steve Dickson <steved@redhat.com> Tested-by: Michael Weiser <weiser@science-computing.de>
* gssd: Look for user creds in user defined directorySteve Dickson2012-03-223-3/+36
| | | | | | | | | The user credential cache currently is kept in /tmp. In upcoming Kerberos release that will be moved to /run/user/<username>/. This patch enables gssd to look in both the old and new caches Signed-off-by: Steve Dickson <steved@redhat.com>
* nfsd: Bump up the default to 8 nprocsSteve Dickson2012-03-161-1/+5
| | | | | | | | When the nproc argument is not given the rpc.nfsd a default number of processes is created. This patch bumps that default up from 1 to 8. Signed-off-by: Steve Dickson <steved@redhat.com>
* Kill SPKM3: Remove also the dependent lipkey mechanismSimo Sorce2012-03-123-12/+2
| | | | | Signed-off-by: Simo Sorce <simo@redhat.com> Signed-off-by: Steve Dickson <steved@redhat.com>
* Kill SPKM3: Remove spkm3 support from nfs.mountSimo Sorce2012-03-123-14/+2
| | | | | Signed-off-by: Simo Sorce <simo@redhat.com> Signed-off-by: Steve Dickson <steved@redhat.com>
* Kill SPKM3: remove spkm3 from common gssd codeSimo Sorce2012-03-124-191/+0
| | | | | Signed-off-by: Simo Sorce <simo@redhat.com> Signed-off-by: Steve Dickson <steved@redhat.com>
* Kill SPKM3: Remove spkm3 support from gssdSimo Sorce2012-03-125-122/+4
| | | | | Signed-off-by: Simo Sorce <simo@redhat.com> Signed-off-by: Steve Dickson <steved@redhat.com>
* Kill SPKM3: Remove spkm3 references from svcgssdSimo Sorce2012-03-122-7/+2
| | | | | Signed-off-by: Simo Sorce <simo@redhat.com> Signed-off-by: Steve Dickson <steved@redhat.com>
* exportfs: Removed warnings about routines not being prototypedSteve Dickson2012-03-121-2/+4
| | | | Signed-off-by: Steve Dickson <steved@redhat.com>
* exportfs: Stop racing exportfs on clustersSteve Dickson2012-03-121-0/+41
| | | | | | | | | | This problem can occur when multiple cluster services fail over at the same time, causing missing high-available exports. Having a lot of nfs-exports will trigger this issue easier. https://bugzilla.linux-nfs.org/show_bug.cgi?id=224 Signed-off-by: Steve Dickson <steved@redhat.com>
* nfs-utils: exports man page: no_acl is not supportedHarshula Jayasuriya2012-02-291-18/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | The inclusion of no_acl in the exports man page is confusing since it is not actually supported (v3.3-rc3): 1090 static struct flags { 1091 int flag; 1092 char *name[2]; 1093 } expflags[] = { 1094 { NFSEXP_READONLY, {"ro", "rw"}}, 1095 { NFSEXP_INSECURE_PORT, {"insecure", ""}}, 1096 { NFSEXP_ROOTSQUASH, {"root_squash", "no_root_squash"}}, 1097 { NFSEXP_ALLSQUASH, {"all_squash", ""}}, 1098 { NFSEXP_ASYNC, {"async", "sync"}}, 1099 { NFSEXP_GATHERED_WRITES, {"wdelay", "no_wdelay"}}, 1100 { NFSEXP_NOHIDE, {"nohide", ""}}, 1101 { NFSEXP_CROSSMOUNT, {"crossmnt", ""}}, 1102 { NFSEXP_NOSUBTREECHECK, {"no_subtree_check", ""}}, 1103 { NFSEXP_NOAUTHNLM, {"insecure_locks", ""}}, 1104 { NFSEXP_V4ROOT, {"v4root", ""}}, 1105 { 0, {"", ""}} 1106 }; Signed-off-by: Harshula Jayasuriya <harshula@redhat.com> Acked-by: J. Bruce Fields <bfields@redhat.com> Signed-off-by: Steve Dickson <steved@redhat.com>
* autoconf: only link binaries that need it to libtirpcJeff Layton2012-01-166-8/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch is essentially the same as the previous version, but has been respun to fix up some merge conflicts with some of Chuck's recent changes. When we first added tirpc support, we took a "big hammer" approach, and had it add libtirpc to $LIBS. That had the effect of making it so that that library was linked into every binary. That's unnecessary, and wasteful with memory. Don't let AC_CHECK_LIB add -ltirpc to $LIBS. Instead, have the autoconf tests set $(LIBTIRPC) in the makefiles, and have the programs that need it explicitly include that library. In the event that we're not using libtirpc, then set $LIBTIRPC to a blank string. This necessitates a change to the bindresvport_sa check too. Since that library is no longer included in $LIBS, we need to convert that check to use AC_CHECK_LIB instead of AC_CHECK_FUNCS. This patch also fixes a subtle bug. If the library was usable, but the includes were not, the test would set $enable_tirpc to "no", but HAVE_LIBTIRPC would still be true. That configuration would likely fail to build. Signed-off-by: Jeff Layton <jlayton@redhat.com> Signed-off-by: Steve Dickson <steved@redhat.com>
* nfsidmap: Purge the keyring when its full.Steve Dickson2012-01-161-3/+21
| | | | | | | | | | | | | | When a key can not be added to a keyring because the keyring is full or there is no memory for the playload, keyctl_instantiate() will fail and set the errno to -EDQUOT, -ENFILE or -ENOMEM When this happens, purge the keyring to free things up and then try to re-add the key. Signed-off-by: Steve Dickson <steved@redhat.com>
* mountd: Support junction management plug-insChuck Lever2012-01-052-2/+225
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | To support FedFS and NFS junctions without introducing additional build-time or run-time dependencies on nfs-utils, the community has chosen to use a dynamically loadable library to handle junction resolution. There is one plug-in library for mountd that will handle any NFS- related junction type. Currently there are two types: o nfs-basic locally stored file set location data, and o nfs-fedfs file set location data stored on an LDAP server mountd's support for this library is enabled at build time by the presence of the junction API definition header: /usr/include/nfs-plugin.h If this header is not found on the build system, mountd will build without junction support, and will operate as before. Note that mountd does not cache junction resolution results. NFSD already caches these results in its exports cache. Thus each time NFSD calls up to mountd, it is, in essence, requesting a fresh junction resolution operation, not a cached response. Signed-off-by: Chuck Lever <chuck.lever@oracle.com> Signed-off-by: Steve Dickson <steved@redhat.com>
* mountd: remove newline from xlog() format specifier stringsChuck Lever2012-01-051-5/+5
| | | | | | | | Clean up: xlog() already adds a newline to the end of each line of output. Remove the superfluous newline from a number of xlog() call sites in mountd. Signed-off-by: Steve Dickson <steved@redhat.com>
* mountd: Plug v4root memory leakChuck Lever2012-01-051-1/+1
| | | | | | | | | | | | Valgrind reports that the memory allocated for eep's e_hostname field was not being freed. eep is not visible outside of v4root_create(), so we don't need to strdup() that string. Introduced by commit 3b777b0 "exports: NFSv4 pseudoroot support routines" (Dec 1, 2009). Signed-off-by: Chuck Lever <chuck.lever@oracle.com> Signed-off-by: Steve Dickson <steved@redhat.com>
* autoconf: don't let libnfsidmap test add -lnfsidmap to $LIBSJeff Layton2012-01-053-3/+3
| | | | | | | | | | ...as that makes that library get linked into every binary. Also, replace "hardcoded" -lnfsidmap linker flag in Makefiles with a AC_SUBST variable. This fixes a regression introduced in commit d7c64dd. Signed-off-by: Jeff Layton <jlayton@redhat.com>
* autoconf: fix up libevent autoconf testJeff Layton2012-01-051-1/+1
| | | | | | | Have it set LIBEVENT to -levent and use that in the Makefiles instead of hardcoding it. Signed-off-by: Jeff Layton <jlayton@redhat.com>
* gssd: avoid double-free upon write failureJim Meyering2012-01-051-5/+4
| | | | | | | | | Free just calloc'd enc_key.data from one place, unconditionally, after calling write_lucid_keyblock, rather than from three places. Coverity spotted the possible double free. Signed-off-by: Steve Dickson <steved@redhat.com>
* mount.nfs: don't overwrite mount options from /etc/nfsmount.confKarel Zak2012-01-051-0/+15
| | | | | | | | | | | | | | The libmount (as well as mount(8)) ignores mount options from command line if running in restricted mode (suid, non-root-user) and all options are read from fstab only. It means that all options are replaced with stuff from fstab, including mount options from nfsmount.conf. This is bug. We have to apply fstab and then nfsmount.conf. Signed-off-by: Karel Zak <kzak@redhat.com> Signed-off-by: Steve Dickson <steved@redhat.com>
* nfsidmap: Stack variable not being initialized.Steve Dickson2011-12-131-3/+3
| | | | | | | | The 'clearing' variable was not being initialized to zero which was cause the default key ring to always be cleared. Signed-off-by: Steve Dickson <steved@redhat.com>
* mount.nfs: Background mounts failing on time out errors.Steve Dickson2011-12-051-0/+2
| | | | | | | | | Mounting with the "-o v3,bg,proto=udp" options will fail, instead of retrying, when the server is down. The reason being nfs_rewrite_pmap_mount_options() does not interrupt RPC timeouts correctly. Signed-off-by: Steve Dickson <steved@redhat.com>
* nfsidmap: Allow a particular key to be revoked.Steve Dickson2011-12-052-7/+100
| | | | | | | | | | | | | | Introducing three new command line arguments that allow particular keys to be revoke -u will remove a uid key -g will revoke a gid key -r will revoke both the uid and gid keys A user name has also needs to be supply with these new flags. Signed-off-by: Steve Dickson <steved@redhat.com>
* nfsidmap: Allow keys to be cleared from the keyringSteve Dickson2011-12-052-5/+73
| | | | | | | Added the '-c' command line argument that will clear all the keys from the keyring. Signed-off-by: Steve Dickson <steved@redhat.com>
* nfsidmap: Added -v and -t flagsSteve Dickson2011-11-142-22/+52
| | | | | | | | | | | To aid in debugging, the -v flag can now be specified, multiple time, on the command line to enable verbose logging in both the nfsidmap command and libnfsidmap library routines. Also converted the timeout argument to use a -t flag. Signed-off-by: Steve Dickson <steved@redhat.com>
* nfsidmap: Added Error LoggingSteve Dickson2011-11-142-5/+31
| | | | | | | Since this binary is being called by the kernel, errors need to be logged to the syslog for help in debugging problems. Signed-off-by: Steve Dickson <steved@redhat.com>
* mount.nfs: Mount should really return from errno testYang Bai2011-10-181-2/+4
| | | | | | | | | We should only try next address family if we meet ECONNREFUSED or EHOSTUNREACH for v4 or ECONNREFUSED or EOPNOTSUPP or EHOSTUNREACH for v3v2. Before, only a break in swich can not make the program out of for loop. Signed-off-by: Yang Bai <hamo.by@gmail.com> Signed-off-by: Steve Dickson <steved@redhat.com>
* rpc.idmapd: Dies with 'I/O possible'Luca Giuzzi2011-10-041-1/+1
| | | | | | | | | | | | We have had problems on some of our machines (all Fedora 14), where rpc.idmapd used to die with an `I/O possible' message at (basically) random times. A strace suggested the issue being in nfsopen() where a signal type is reset before notification is disabled; a signal at just the right time might be the cause of the problem; see https://bugzilla.redhat.com/show_bug.cgi?id=684308 Reviewed-by: Jeff Layton <jlayton@redhat.com> Signed-off-by: Steve Dickson <steved@redhat.com>
* man pages: fixed a few typos in a couple man pagesSteve Dickson2011-10-043-5/+5
| | | | Signed-off-by: Steve Dickson <steved@redhat.com>
* nfs.man: Fix macro useLuk Claes2011-10-031-3/+3
| | | | | | | | | | | | | The groff macros for filling (word-wrapping) and tabulation control are lower-case, but are written in upper-case here and so have been ignored. Change the .NF and .FI lines to lower-case. Change the .TA lines to lower-case and fix the tab stops to work both on a terminal and in Postscript output. Signed-off-by: Luk Claes <luk@debian.org> Signed-off-by: Steve Dickson <steved@redhat.com>
* blkmapd: Use getconf(_SC_PAGE_SIZE)Luk Claes2011-10-031-1/+1
| | | | | | | | | PAGE_SIZE is not exported by all architectures as it is not fixed: it can depend on the model of the machine. So it's better to query the system configuration for the actual page size on the machine. Signed-off-by: Luk Claes <luk@debian.org> Signed-off-by: Steve Dickson <steved@redhat.com>
* blkmapd: Add complex block layout discovery and mapping daemonSteve Dickson2011-09-228-0/+1850
| | | | | | | | This daemon is required to handle upcalls from the kernel pnfs block layout driver. Signed-off-by: Jim Rees <rees@umich.edu> Signed-off-by: Steve Dickson <steved@redhat.com>
* idmapd: Fix decoding of octal encoded fieldsJan-Marek Glogowski2011-09-201-2/+2
| | | | | | | | | | | | The decoded octal will always be positive and (char) -1 is negative. Any field containing an encoded octal will be rejected. As the encoded value should be an unsigned char, fix the check to reject all values > (unsigned char) -1 = UCHAR_MAX, as this indicate an error in the encoding. Signed-off-by: Jan-Marek Glogowski <glogow@fbihome.de> Signed-off-by: Steve Dickson <steved@redhat.com>
* nfsd: allow choosing server 41 support at runtimeJ. Bruce Fields2011-09-202-9/+12
| | | | | | | | | | | | | In the case where -N 4.1 is left off the commandline, the current code explicitly turns it on or off anyway, depending on configure options. Instead, just leave 4.1 support alone. This allows a user to add an "echo +4.1 >/proc/fs/nfsd/versions" to their init scripts, if they want. Otherwise they will get the kernel's default (currently to leave 4.1 off, as long as 4.1 support is experimental). Signed-off-by: J. Bruce Fields <bfields@citi.umich.edu> Signed-off-by: Steve Dickson <steved@redhat.com>
* sm-notify: sm-notify leaves monitor records in sm.bakChuck Lever2011-09-201-13/+22
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | sm-notify fails to remove monitor records from sm.bak when it has finally notified a host. This is because of a recent change to send two SM_NOTIFY requests for each monitored peer: one with the local host's FQDN, and one with an unqualified version of same. This was commit baa41b2c: "sm-notify: Send fully-qualified and unqualified mon_names" (March 19, 2010). Because of the March 2010 commit, sm-notify modifies the "my_name" string during notification, but then uses this modified string to try to find the monitor record to remove. Of course the search for the record fails. So a persistent monitor record is left in sm.bak. Aside from leaving trash around, this causes the same hosts to be notified after every reboot, even if they successfully responded to the previous SM_NOTIFY and they had no contact with us during the last boot. I also noticed that the trick of truncating the argument of SM_NOTIFY doesn't work at all if a substitute "my_name" was specified via the "-v" command line option. This patch attempts to address that as well. sm-notify should preserve the original my_name string so that nsm_delete_host() can find the correct monitor record to delete. Also add some degree of protection to the mon_name and my_name strings in each nsm_host record to prevent a future change from breaking this dependency. Signed-off-by: Chuck Lever <chuck.lever@oracle.com> Signed-off-by: Steve Dickson <steved@redhat.com>
* sm-notify: Avoid extra rpcbind queriesChuck Lever2011-09-201-0/+1
| | | | | | | | | | | | | | | | The logic in notify_host() watches the host->retries counter to see if progress is not being made. If progress stalls, notify_host() tries another IP address. This means sm-notify will generate a fresh rpcbind query. After an RPC succeeds, be sure to reset host->retries so sm-notify doesn't start walking down the host's addrinfo list when we _are_ making progress. In the common case, if the host responds, we avoid extra rpcbind queries and send all requests for the host to the same IP address. Signed-off-by: Chuck Lever <chuck.lever@oracle.com> Signed-off-by: Steve Dickson <steved@redhat.com>
* sm-notify: Use correct retransmit timeout when sending a fresh RPCChuck Lever2011-09-201-2/+1
| | | | | | | | | An RPC retransmit timeout should start out the same for each new RPC request. Don't increase the retransmit timeout after receiving the reply to the rpcbind query. Signed-off-by: Chuck Lever <chuck.lever@oracle.com> Signed-off-by: Steve Dickson <steved@redhat.com>
* sm-notify: Refactor insert_host() and recv_rpcbind_reply()Chuck Lever2011-09-201-16/+26
| | | | | | | | | | | Clean up: refactor the logic in recv_rpcbind_reply() that re-schedules an nsm_host into a separate helper function Adjust debugging messages so it's always apparent when an nsm_host is rescheduled. Signed-off-by: Chuck Lever <chuck.lever@oracle.com> Signed-off-by: Steve Dickson <steved@redhat.com>
* nfsumount: Squelch compiler warningChuck Lever2011-09-201-1/+2
| | | | | | | | | | | nfsumount.c: In function nfs_umount_is_vers4: nfsumount.c:164: warning: conversion to int from size_t may alter its value nfsumount.c:173: warning: conversion to ?size_t? from int may change the sign of the result Introduced by commit 3564ebbf. Signed-off-by: Chuck Lever <chuck.lever@oracle.com> Signed-off-by: Steve Dickson <steved@redhat.com>
* mount.nfs: Preserve any explicit port=2049 optionBen Hutchings2011-09-141-2/+2
| | | | | | | | If NFS port (2049) is supplied explicitly, don't ignore this setting by requesting it to portmapper again. Signed-off-by: Luk Claes <luk@debian.org> Signed-off-by: Steve Dickson <steved@redhat.com>
* exportfs: do not warn if /etc/exports.d/ does not existMike Frysinger2011-09-011-2/+5
| | | | | | | | | It isn't uncommon for /etc/exports.d/ to not exist, and imo, it's not that big of a deal as often times, a simple /etc/exports is sufficient. So silently skip the case where the dir is missing. Signed-off-by: Mike Frysinger <vapier@gentoo.org> Signed-off-by: Steve Dickson <steved@redhat.com>
* exportfs: drop extra newline in xlogMike Frysinger2011-09-011-4/+4
| | | | | | | | Since xlog() itself appends a newline, we don't want to add our own otherwise we get extra in the output. Signed-off-by: Mike Frysinger <vapier@gentoo.org> Signed-off-by: Steve Dickson <steved@redhat.com>
* Update nfs(5) manpage - timeo for NFS/TCPMax Matveev2011-08-301-6/+10
| | | | | | | | | NFS/TCP does linear backoff then retransmiting - the manpage was mistakenly asserting the "no backoff" theory. Signed-off-by: Max Matveev <makc@redhat.com> Signed-off-by: Jim Rees <rees@umich.edu> Signed-off-by: Steve Dickson <steved@redhat.com>
* sm-notify: sm-notify doesn't handle localhost properlyChuck Lever2011-08-291-25/+102
| | | | | | | | | | | | | | It looks like the existing algorithm for verifying the passed-in bind address is as broken as statd_matchhostname() used to be: for IP addresses, AI_CANONNAME is useless. We need to have getnameinfo(3) or equivalent in there. Clean up: extract the logic that verifies the command line bind address into its own function, and make it handle canonical name lookup correctly. Signed-off-by: Chuck Lever <chuck.lever@oracle.com> Signed-off-by: Steve Dickson <steved@redhat.com>
* exportfs: matchhostname() doesn't handle localhost properlyChuck Lever2011-08-291-2/+32
| | | | | | | | | | | | Same change as statd_matchhostname() is necessary for the logic in exportfs. Recall that these are "separate but nearly equal" because the exportfs version requires extra expensive string checking that would be onerous for statd. Signed-off-by: Chuck Lever <chuck.lever@oracle.com> Signed-off-by: Steve Dickson <steved@redhat.com>
* statd: statd_matchhostname() doesn't handle localhost properlyChuck Lever2011-08-291-8/+47
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | The job of statd_matchhostname() is to work hard at matching two hostnames or presentation IP addresses that may refer to the same host. statd_matchhostname() turns the hostname of the local system into a list of addresses containing only the loopback address. The actual DNS registered address of the system does not appear in that list. Presentation IP addresses, on the other hand, are soundly ignored by the AI_CANONNAME option of getaddrinfo(3). The ai_canonname string that is returned is just the same presentation IP address. And the resulting list of addresses contains just that IP address. So if the DNS registered IP address of the local host is passed in as one argument, and the local hostname is passed as the other argument, statd_matchhostname() whiffs and believes there is no match. To fix this, the logic needs to be smarter about deriving a hostname from an IP address. This appears to cause no end of trouble: monitor records pile up in /var/lib/nfs/sm and sm.bak, notifications are missed, and so on. This has likely been around since commit cbd3a131 "statd: Introduce statd version of matchhostname()" (Jan 14, 2010). Signed-off-by: Chuck Lever <chuck.lever@oracle.com> Signed-off-by: Steve Dickson <steved@redhat.com>
* sm-notify: Disable syslog messages when debugging is enabledChuck Lever2011-08-291-2/+4
| | | | | | | | | statd's "-F" flag disables syslog output, and specifies sm-notify's "-d" option when it runs it. sm-notify's "-d" option should therefore also disable syslog output. Signed-off-by: Chuck Lever <chuck.lever@oracle.com> Signed-off-by: Steve Dickson <steved@redhat.com>
* statd: Report count of loaded hosts correctlyChuck Lever2011-08-291-1/+1
| | | | | | | | Fix a debugging message to report correctly the count of hosts loaded when statd starts up. Signed-off-by: Chuck Lever <chuck.lever@oracle.com> Signed-off-by: Steve Dickson <steved@redhat.com>