summaryrefslogtreecommitdiffstats
path: root/utils
Commit message (Collapse)AuthorAgeFilesLines
...
* gssd - remove arbitrary GSSD_MAX_CCACHE_SEARCH limitationDavid Hardeman2015-01-232-13/+35
| | | | | | | Get rid of another arbitrary limitation and PATH_MAX array. Signed-off-by: David Hardeman <david@hardeman.nu> Signed-off-by: Steve Dickson <steved@redhat.com>
* gssd - simplify some option handlingDavid Hardeman2015-01-232-10/+6
| | | | | | | | Using PATH_MAX in modern code is almost always a bad idea. Simplify the code and remove that arbitrary limitation at the same time. Signed-off-by: David Hardeman <david@hardeman.nu> Signed-off-by: Steve Dickson <steved@redhat.com>
* gssd - merge gssd_main_loop.c and gssd.cDavid Hardeman2015-01-234-271/+220
| | | | | | | | Having all the main loop code in one file is important in preparation for later patches which add inotify and libevent. Signed-off-by: David Hardeman <david@hardeman.nu> Signed-off-by: Steve Dickson <steved@redhat.com>
* cleanup daemonization codeDavid Hardeman2015-01-236-71/+17
| | | | | | | | | | | | | | | The daemonization init/ready functions have parameters that are never used, require the caller to keep track of some pipefds that it has no interest in and which might not be used in some scenarios. Cleanup both functions a bit. The idea here is also that these two functions might be good points to insert more systemd init code later (sd_notify()). Also, statd had a private copy of the daemonization code for unknown reasons...so make it use the generic version instead. Signed-off-by: David H?rdeman <david@hardeman.nu> Signed-off-by: Steve Dickson <steved@redhat.com>
* mount.nfs: configurable minor version defaultsBenjamin Coddington2015-01-231-43/+95
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Update nfsmount.conf to allow minor version specification, and rearrange the autonegotiation logic to agreed upon best behavior. Depending upon the combination of values specified within nfsmount.conf and given to mount.nfs, the retry behavior of mount.nfs varies according to the general rule of defaulting to the most specific setting, with some exceptions. A general guide to the expected behavior follows: ------------------ | nfsmount.conf |----------------------------------- | Defaultvers= | arg option | attempts: | |---------------------------------------------------| | 4.2 | not set | v4.2 v4.1 v4.0 v3 | | 4.2 | v4 | v4.2 v4.1 v4.0 | | 4.1 | not set | v4.1 v4.0 v3 | | 4.1 | v4 | v4.1 v4.0 | | 4 | not set | v4.0 v3 | | 4 | v4 | v4.0 | | 3 | not set | v3 | | any set | v4.2 | v4.2 | | any set | v4.1 | v4.1 | | any set | v4 | v4.0 | | any set | v3 | v3 | | not set | not set | v4.2 v4.1 v4.0 v3 | ----------------------------------------------------- If built with --enable-mountconfig=no, then the behavior is the same as if nfsmount.conf did not set Defaultvers. Signed-off-by: Benjamin Coddington <bcodding@redhat.com> Signed-off-by: Steve Dickson <steved@redhat.com>
* nfsmount.conf: Always parse versionsBenjamin Coddington2015-01-231-34/+0
| | | | | | | | | | | In order to make decisions about which default version to use when only the major version is specified, the nfsmount.conf Defaultvers options should always be parsed, even when a version has already been specified. Remove the check and bypass for parsing the Defaultvers options from nfsmount.conf. Signed-off-by: Benjamin Coddington <bcodding@redhat.com> Signed-off-by: Steve Dickson <steved@redhat.com>
* mount.nfs: Add struct nfs_version and generalize version parsingBenjamin Coddington2015-01-235-77/+88
| | | | | | | | | | | | | | | | | | The nfs_version needs to carry major, minor, and basic mode information to allow decisions to be made to override, discard, or negotiate various versions. Update nfs_nfs_version() to work against this struct and set the various modes. This change also makes nfs_nfs_version() parse properly for future version number additions. The general rules for version.v_mode are - not set V_DEFAULT - single digit => 4 V_GENERAL - single digit < 4 V_SPECIFIC - decimal included V_SPECIFIC - miss all others V_PARSE_ERR Signed-off-by: Benjamin Coddington <bcodding@redhat.com> Signed-off-by: Steve Dickson <steved@redhat.com>
* mount.nfs: parse options - add helper po_contains_prefixBenjamin Coddington2015-01-232-0/+26
| | | | | | | | | | The version options (v3,v4,v4.2) may increase in the future, but they have a predictable prefix. Add a parse option helper to locate and return these options by prefix so that a future increment of version does not require the addition of strings to a search table. Signed-off-by: Benjamin Coddington <bcodding@redhat.com> Signed-off-by: Steve Dickson <steved@redhat.com>
* mount.nfs: fix a comment typo in parse optionsBenjamin Coddington2015-01-231-1/+1
| | | | | Signed-off-by: Benjamin Coddington <bcodding@redhat.com> Signed-off-by: Steve Dickson <steved@redhat.com>
* rpc.idmapd: Add a reference to nfsidmap(8) on the man pageScott Mayhew2015-01-231-1/+12
| | | | | | | | Even though the 'new' idmapper used by the client has been around for several years, a lot of users seem to be unaware of its existence. Signed-off-by: Scott Mayhew <smayhew@redhat.com> Signed-off-by: Steve Dickson <steved@redhat.com>
* rpc.idmap: Use event_initialized() to check if event is initializedSteve Dickson2015-01-231-1/+1
| | | | | | | | Using EVLIST_INIT directly is bound to break. This seems to be a leftover from legacy code. Reported-by: Holger Hoffstatte <holger.hoffstaette@googlemail.com> Signed-off-by: Steve Dickson <steved@redhat.com>
* start-statd: Use the canonical to check if systemd is running.Steve Dickson2015-01-151-1/+1
| | | | | | | | | Use the approved way, define in http://www.freedesktop.org/software/systemd/man/sd_booted.html to check if systemd is installed and running Signed-off-by: Steve Dickson <steved@redhat.com>
* gssd: fix gssd build flagsDavid Hardeman2014-12-081-2/+2
| | | | | | | | | The tirpc variable is another library to add, not additional flags. I'm guessing the reason this hasn't caused problems is that it only shows up with static libraries. Signed-off-by: David Hardeman <david@hardeman.nu> Signed-off-by: Steve Dickson <steved@redhat.com>
* Fix up issue with "make dist"NeilBrown2014-12-079-11/+15
| | | | | | | | | | | | | Add mention of new files, remove mention of old files, and cause "make dist" to create something very similar to the current distributions. systemd files are not currently included in "make dist" and some files generated by "rpcgen" are (though they aren't in official distribution). Signed-off-by: NeilBrown <neilb@suse.de> Signed-off-by: Steve Dickson <steved@redhat.com>
* gssd: talk to kernel using file descriptors instead of FILETimo Teräs2014-12-074-33/+38
| | | | Signed-off-by: Steve Dickson <steved@redhat.com>
* mountd: talk to kernel using file descriptors instead of FILETimo Teräs2014-12-071-160/+183
| | | | Signed-off-by: Steve Dickson <steved@redhat.com>
* Add string.h to source files that need itTimo Teräs2014-12-072-0/+2
| | | | Signed-off-by: Steve Dickson <steved@redhat.com>
* exportfs: warn when really nothing is exportedPavel Raiskup2014-12-031-9/+13
| | | | | | | | | | | | Throw 'No file systems exported!' iff no volume is exported rather then if some exports file is empty. Typically this can happen if the default /etc/exports file is empty and admin installed configuration into /etc/exports.d directory. This is follow-up for e725def62c73b4 commit. Signed-off-by: Pavel Raiskup <praiskup@redhat.com> Signed-off-by: Steve Dickson <steved@redhat.com>
* nfsdcltrack: use sqlite3_errmsg instead of sqlite3_errstrJeff Layton2014-11-171-6/+6
| | | | | | | | | sqlite3_errstr was only added in v3.7.15 of libsqlite3, which makes it difficult to build against earlier releases. Switch the code over to use sqlite3_errmsg instead. Signed-off-by: Jeff Layton <jlayton@primarydata.com> Signed-off-by: Steve Dickson <steved@redhat.com>
* nfsdcltrack: use sqlite3_close instead of sqlite3_close_v2Jeff Layton2014-11-171-1/+1
| | | | | | | | | | | | | | sqlite3_close_v2 wasn't added until v3.7.14 of libsqlite3 so this causes the build to fail vs. very old sqlite3 libs. Also, Chuck points out that the documentation says that sqlite3_close_v2 is intended for use with host languages that are garbage collected, and C isn't. In practice, we shouldn't ever see sqlite3_close return SQLITE_BUSY here anyway since the program is single-threaded, so sqlite3_close should be fine. Signed-off-by: Jeff Layton <jlayton@primarydata.com> Signed-off-by: Steve Dickson <steved@redhat.com>
* exportfs: Do not fail on empty exports file.Steve Dickson2014-11-171-5/+5
| | | | | | | | | | Commit 076dd80 introduced a regression that causes exportfs to fail when there is an empty /etc/exports file. A empty /etc/exports file is valid and should not cause exportfs to fail. Signed-off-by: Steve Dickson <steved@redhat.com> Signed-off-by: Steve Dickson <steved@redhat.com>
* nfsidmap: Correct a failure to set key timeout valuesBenjamin Coddington2014-11-041-0/+3
| | | | | | | | | The caller must be a possesor of the key to set the attributes, so link the destination keyring to the current thread's keyring before instantiation so that after instantiation the timeout can be set. Signed-off-by: Benjamin Coddington <bcodding@redhat.com> Signed-off-by: Steve Dickson <steved@redhat.com>
* nfsidmap: set the correct DEFAULT_KEYRING stringBenjamin Coddington2014-11-041-1/+1
| | | | | Signed-off-by: Benjamin Coddington <bcodding@redhat.com> Signed-off-by: Steve Dickson <steved@redhat.com>
* nfsidmap: keyctl_invalidate kernel compatibilityBenjamin Coddington2014-11-041-4/+17
| | | | | | | | | | Change the keyctl_invalidate call to use the syscall interface directly so that when building with libkeyutils missing keyctl_invalidate the build succeeds. Attempt to use _invalidate and fall back to _revoke if the current kernel is missing _invalidate. Signed-off-by: Benjamin Coddington <bcodding@redhat.com> Signed-off-by: Steve Dickson <steved@redhat.com>
* umount: make it sensitive to -vKarel Zak2014-10-241-1/+13
| | | | | | | Let's print verbose messages like original non-libmount version. Signed-off-by: Karel Zak <kzak@redhat.com> Signed-off-by: Steve Dickson <steved@redhat.com>
* nfsstat: fix server rpc stats headerMarko Myllynen2014-10-221-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | linux/net/sunrpc/stats.c has: /* * Get RPC server stats */ void svc_seq_show(struct seq_file *seq, const struct svc_stat *statp) { ... seq_printf(seq, "rpc %u %u %u %u %u\n", statp->rpccnt, statp->rpcbadfmt+statp->rpcbadauth+statp->rpcbadclnt, statp->rpcbadfmt, statp->rpcbadauth, statp->rpcbadclnt); ... But when /proc/net/rpc/nfsd contains rpc 1 2 3 4 5 nfsstat -sv prints: Server rpc stats: calls badcalls badclnt badauth xdrcall 1 2 3 4 5 Change this to match the kernel: Server rpc stats: calls badcalls badfmt badauth badclnt 1 2 3 4 5 Fixes https://bugzilla.redhat.com/show_bug.cgi?id=1142842. Signed-off-by: Marko Myllynen <myllynen@redhat.com> Reviewed-by: Christoph Hellwig <hch@lst.de> Signed-off-by: Steve Dickson <steved@redhat.com>
* rpc.svcgssd: Add a configure switch to disable building the daemonSteve Dickson2014-09-251-2/+9
| | | | | | | | Now that gssproxy is supported on modern kernels, the svcgssd is no longer needed. This switch disables the building of the daemon. Signed-off-by: Steve Dickson <steved@redhat.com>
* nfsstat: document nfsstat io/ra server facilitiesMarko Myllynen2014-09-221-0/+8
| | | | | | | Document the newly added nfsstat io/ra server facilities. Signed-off-by: Marko Myllynen <myllynen@redhat.com> Signed-off-by: Steve Dickson <steved@redhat.com>
* nfsstat: add server ra cache statsMarko Myllynen2014-09-221-4/+25
| | | | | | | Add server read ahead cache statistics to nfsstat. Signed-off-by: Marko Myllynen <myllynen@redhat.com> Signed-off-by: Steve Dickson <steved@redhat.com>
* nfsstat: add server io statsMarko Myllynen2014-09-221-3/+23
| | | | | | | Add server io statistics to nfsstat. Signed-off-by: Marko Myllynen <myllynen@redhat.com> Signed-off-by: Steve Dickson <steved@redhat.com>
* nfsdcltrack: fetch NFSDCLTRACK_GRACE_START out of environmentJeff Layton2014-09-193-1/+112
| | | | | | | | | | | | | Allow the fetching of NFSDCLTRACK_GRACE_START out of environment variables. If it's present in the "create" or "init" upcalls, then we can use that to query the database to see whether there are any clients that have not issued a RECLAIM_COMPLETE since that time. If there aren't any, then we know that all reclaim activity is now done and we can then cue the kernel to lift the grace period. Signed-off-by: Jeff Layton <jlayton@primarydata.com> Signed-off-by: Steve Dickson <steved@redhat.com>
* nfsdcltrack: grab the NFSDCLTRACK_CLIENT_HAS_SESSION env var if it's presentJeff Layton2014-09-193-12/+55
| | | | | | | | | | ...and set the has_session field in the DB based on whether it's true or not. Since we no longer set the timestamp for v4.1+ clients on a check operation, we must be careful to set the timestamp to zero for v4.1+ clients found via the legacy tracker. Signed-off-by: Jeff Layton <jlayton@primarydata.com> Signed-off-by: Steve Dickson <steved@redhat.com>
* nfsdcltrack: update schema to v2Jeff Layton2014-09-191-8/+93
| | | | | | | | | | | | | | | | | | | | From: Jeff Layton <jlayton@poochiereds.net> In order to allow knfsd's lock manager to lift its grace period early, we need to figure out whether all clients have finished reclaiming their state not. Unfortunately, the current code doesn't allow us to ascertain this. All we track for each client is a timestamp that tells us when the last "check" or "create" operation came in. Not only is this insufficient with clients that use sessions, it's also wrong. We only want to update the timestamp on v4.1 clients when the "create" operation comes in or we can leave the server susceptible to edge condition #2 in RFC5661, section 8.4.3. Once the grace period is lifted, we disallow reclaim on subsequent reboots for clients that have not sent a RECLAIM_COMPLETE. Signed-off-by: Jeff Layton <jlayton@primarydata.com> Signed-off-by: Steve Dickson <steved@redhat.com>
* nfsdcltrack: overhaul database initializtionJeff Layton2014-09-193-85/+141
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We have some possibility for races with nfsdcltrack when the DB schema is upgraded. Suppose we update the nfs-utils package on a machine after the DB has been initialized. With the current scheme of initializing the DB only during the "init" phase, we could end up with a new program that expects a new schema with an old database. We could try to do a one-time update when the package is installed, but that could be racy. We could get an upcall between when the program is installed and when we run the update. Also, relying on packaging to get that right is tricky at best. To fix this, change how the database initialization and checking of the schema revision works. On every upcall, attempt to open the db as we normally would. If that fails, then try to create the directory if it doesn't exist and then retry the open. If it fails again, then give up. If we get a successful open, then query the DB for the schema version. If it matches what we expect, then declare success and move on. If the query fails then assume that the DB isn't set up yet. Start an exclusive transaction, check the schema version again and then set up the DB if no one raced in to create it in the meantime. This should only add a tiny bit of overhead on most upcalls (just an extra select of the parameters table), and should improve the performance of the "init" upcall. It'll also make it possible to handle DB schema changes sanely. Signed-off-by: Jeff Layton <jlayton@primarydata.com> Signed-off-by: Steve Dickson <steved@redhat.com>
* nfsdcltrack: rename CLD_* constants with CLTRACK_* prefixesJeff Layton2014-09-191-6/+6
| | | | | | | | Since nfsdcld has been dead for a few years now, clean up the prefixes on the constants. Signed-off-by: Jeff Layton <jlayton@primarydata.com> Signed-off-by: Steve Dickson <steved@redhat.com>
* nfsdcltrack: update comments in sqlite.cJeff Layton2014-09-191-6/+4
| | | | | | | Clean up and fix some inaccuracies. Signed-off-by: Jeff Layton <jlayton@primarydata.com> Signed-off-by: Steve Dickson <steved@redhat.com>
* sm-notify: inform the kernel if there were no hosts to notifyJeff Layton2014-09-191-0/+25
| | | | | | | | | | | | | | In the event that there no hosts to be notified after a reboot, there's no real reason to force lockd to wait the entire grace period before handing out locks. We're not expecting any reclaim requests to come in that situation. Have sm-notify do a write to /proc/fs/lockd/nlm_end_grace if that file is present. That informs the kernel that it's OK to go ahead and lift lockd's grace period early. Signed-off-by: Jeff Layton <jlayton@primarydata.com> Signed-off-by: Steve Dickson <steved@redhat.com>
* nfsdcltrack: fix some minor nits in the manpageJeff Layton2014-09-191-2/+3
| | | | | | | | nfsdcltrack isn't a daemon, and we should make mention of the section in RFC5661. Signed-off-by: Jeff Layton <jlayton@primarydata.com> Signed-off-by: Steve Dickson <steved@redhat.com>
* exportfs: Properly parse IPv6 literal strings with null terminationTodd Vierling2014-09-191-10/+8
| | | | | | | | | | | | | | | | | The original implementation was using strncpy() with a truncation length to an uninitialized stack buffer, leaving a string that was only null terminated by luck. While here, change to use no-copy semantics (no extra buffer) to avoid buffer overflows altogether. exportfs already modifies argv contents elsewhere, so this doesn't break anything anew. Fixes: 4663c648 (exportfs: Support raw IPv6 addresses with "client:/path") Signed-off-by: Todd Vierling <todd.vierling@oracle.com> Reviewed-by: Chuck Lever <chuck.lever@oracle.com> Signed-off-by: Steve Dickson <steved@redhat.com>
* Fixed typo in nfsstat -sv outputSteve Dickson2014-09-161-1/+1
| | | | Signed-off-by: Steve Dickson <steved@redhat.com>
* gssd: ensure that preferred_realm is non-NULL before passing it to strcmpJeff Layton2014-09-151-1/+1
| | | | | | | | | | | | | | It's possible for "preferred_realm" to be NULL, in which case we don't want to pass it to strcmp. Other places that use this variable test whether it's NULL first -- we need to do the same here. This should fix the gssd crash reported here: https://bugzilla.redhat.com/show_bug.cgi?id=1108615 Reported-by: Brian J. Murrell <brian@interlinx.bc.ca> Signed-off-by: Jeff Layton <jlayton@primarydata.com> Signed-off-by: Steve Dickson <steved@redhat.com>
* Include libgen.h for basenameNatanael Copa2014-09-154-0/+4
| | | | | | | | | | According POSIX basename(3) should have an #include <libgen.h> There are a different GNU implementation too, that can be used with _GNU_SOURCE, but the POSIX version is good enough and more portable. Signed-off-by: Natanael Copa <ncopa@alpinelinux.org> Signed-off-by: Steve Dickson <steved@redhat.com>
* mountd: Only work around glibc bugs on glibcNatanael Copa2014-09-151-1/+1
| | | | | Signed-off-by: Natanael Copa <ncopa@alpinelinux.org> Signed-off-by: Steve Dickson <steved@redhat.com>
* nfsstat: replace the legacy SA_ONESHOT with standard SA_RESETHANDNatanael Copa2014-09-151-1/+1
| | | | | Signed-off-by: Natanael Copa <ncopa@alpinelinux.org> Signed-off-by: Steve Dickson <steved@redhat.com>
* mountd: use standard dev_t instead of glibc internalsNatanael Copa2014-09-151-1/+1
| | | | | | | | The __dev_t is a GNU libc internal. Use the standard dev_t instead, which is specified in POSIX. Signed-off-by: Natanael Copa <ncopa@alpinelinux.org> Signed-off-by: Steve Dickson <steved@redhat.com>
* replace __attribute_malloc__ with the more portable __attribute__((__malloc__))Natanael Copa2014-09-153-8/+8
| | | | | Signed-off-by: Natanael Copa <ncopa@alpinelinux.org> Signed-off-by: Steve Dickson <steved@redhat.com>
* exportfs: taught exportfs -v about the nordirplus optionSteve Dickson2014-08-241-0/+2
| | | | Signed-off-by: Steve Dickson <steved@redhat.com>
* nfs-utils: Allow turning off nfsv3 readdir_plusRajesh Ghanekar2014-08-201-0/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | One of our customer's application only needs file names, not file attributes. With directories having 10K+ inodes (assuming buffer cache has directory blocks cached having file names, but inode cache is limited and hence need eviction of older cached inodes), older inodes are evicted periodically. So if they keep on doing readdir(2) from NSF client on multiple directories, some directory's files are periodically removed from inode cache and hence new readdir(2) on same directory requires disk access to bring back inodes again to inode cache. As READDIRPLUS request fetches attributes also, doing getattr on each file on server, it causes unnecessary disk accesses. If READDIRPLUS on NFS client is returned with -ENOTSUPP, NFS client uses READDIR request which just gets the names of the files in a directory, not attributes, hence avoiding disk accesses on server. There's already a corresponding client-side mount option, but an export option reduces the need for configuration across multiple clients. This flag affects NFSv3 only. If it turns out it's needed for NFSv4 as well then we may have to figure out how to extend the behavior to NFSv4, but it's not currently obvious how to do that. Signed-off-by: Rajesh Ghanekar <rajesh_ghanekar@symantec.com> Signed-off-by: Steve Dickson <steved@redhat.com>
* start-statd: clean up output when systemd is not installedMike Frysinger2014-08-191-5/+9
| | | | | | | | | | | | If you don't have systemd, then this script dumps: /usr/sbin/start-statd: line 8: systemctl: command not found This isn't terribly useful since we ultimately fall back to running the daemon ourselves, so probe for systemd's existence before we try to use it. Signed-off-by: Mike Frysinger <vapier@gentoo.org> Signed-off-by: Steve Dickson <steved@redhat.com>
* gssd: select non-conventional principalJurjen Bokma2014-08-181-6/+19
| | | | | | | | | | | | | | | | This enable kerberized NFS mounts to succeed even if the principal is not <HOSTNAME>$. It works by reading another principal name from the [appdefaults] section of krb5.conf: [appdefaults] nfs = { ad_principal_name = 129.125.39.115$ } Signed-off-by: Jurjen Bokma <j.bokma@rug.nl> Signed-off-by: Steve Dickson <steved@redhat.com>