diff --git a/SOURCES/nfs-utils-1.3.0-mount-nfsvers.patch b/SOURCES/nfs-utils-1.3.0-mount-nfsvers.patch deleted file mode 100644 index c100856..0000000 --- a/SOURCES/nfs-utils-1.3.0-mount-nfsvers.patch +++ /dev/null @@ -1,36 +0,0 @@ -diff -up nfs-utils-1.3.0/utils/mount/configfile.c.orig nfs-utils-1.3.0/utils/mount/configfile.c ---- nfs-utils-1.3.0/utils/mount/configfile.c.orig 2017-10-05 11:44:08.775077208 -0400 -+++ nfs-utils-1.3.0/utils/mount/configfile.c 2017-10-05 11:49:50.811349443 -0400 -@@ -70,6 +70,7 @@ struct mnt_alias { - {"background", "bg", MNT_NOARG}, - {"foreground", "fg", MNT_NOARG}, - {"sloppy", "sloppy", MNT_NOARG}, -+ {"nfsvers", "vers", MNT_UNSET}, - }; - int mnt_alias_sz = (sizeof(mnt_alias_tab)/sizeof(mnt_alias_tab[0])); - -@@ -296,20 +297,21 @@ conf_parse_mntopts(char *section, char * - - list = conf_get_tag_list(section, arg); - TAILQ_FOREACH(node, &list->fields, link) { -+ /* check first if this is an alias for another option */ -+ field = mountopts_alias(node->field, &argtype); - /* - * Do not overwrite options if already exists - */ -- snprintf(buf, BUFSIZ, "%s=", node->field); -+ snprintf(buf, BUFSIZ, "%s=", field); - if (opts && strcasestr(opts, buf) != NULL) - continue; - -- if (lookup_entry(node->field) != NULL) -+ if (lookup_entry(field) != NULL) - continue; - buf[0] = '\0'; - value = conf_get_section(section, arg, node->field); - if (value == NULL) - continue; -- field = mountopts_alias(node->field, &argtype); - if (strcasecmp(value, "false") == 0) { - if (argtype != MNT_NOARG) - snprintf(buf, BUFSIZ, "no%s", field); diff --git a/SOURCES/nfs-utils-1.3.0-mountstats-shebang.patch b/SOURCES/nfs-utils-1.3.0-mountstats-shebang.patch deleted file mode 100644 index 4217191..0000000 --- a/SOURCES/nfs-utils-1.3.0-mountstats-shebang.patch +++ /dev/null @@ -1,22 +0,0 @@ -commit a1f89c17f529b688ce3f686a48a49cb3789807c5 -Author: Steve Dickson -Date: Thu Jul 27 10:35:55 2017 -0400 - - mountstats: Remove a shebang - - There might be an issue that the script is executed with unwanted - version of . - - Signed-off-by: Steve Dickson - (cherry picked from commit caa59a30b78dedea99a2317da95bb86810360645) - -diff --git a/tools/mountstats/mountstats.py b/tools/mountstats/mountstats.py -index 90b15a5..1dd1f1b 100644 ---- a/tools/mountstats/mountstats.py -+++ b/tools/mountstats/mountstats.py -@@ -1,4 +1,4 @@ --#!/usr/bin/env python -+#!/usr/bin/python - # -*- python-mode -*- - """Parse /proc/self/mountstats and display it in human readable form - """ diff --git a/SOURCES/nfs-utils-1.3.0-nfs-iostat-no-dev.patch b/SOURCES/nfs-utils-1.3.0-nfs-iostat-no-dev.patch deleted file mode 100644 index edfe58a..0000000 --- a/SOURCES/nfs-utils-1.3.0-nfs-iostat-no-dev.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff -up nfs-utils-1.3.0/tools/nfs-iostat/nfs-iostat.py.orig nfs-utils-1.3.0/tools/nfs-iostat/nfs-iostat.py ---- nfs-utils-1.3.0/tools/nfs-iostat/nfs-iostat.py.orig 2017-11-03 09:29:39.000000000 -0400 -+++ nfs-utils-1.3.0/tools/nfs-iostat/nfs-iostat.py 2017-11-03 09:34:25.000000000 -0400 -@@ -434,6 +434,8 @@ def parse_stats_file(filename): - words = line.split() - if len(words) == 0: - continue -+ if line.startswith("no device mounted") : -+ continue - if words[0] == 'device': - key = words[4] - new = [ line.strip() ] diff --git a/SOURCES/nfs-utils-1.3.0-nfs-man-v2.patch b/SOURCES/nfs-utils-1.3.0-nfs-man-v2.patch deleted file mode 100644 index 0496be5..0000000 --- a/SOURCES/nfs-utils-1.3.0-nfs-man-v2.patch +++ /dev/null @@ -1,103 +0,0 @@ -diff -up nfs-utils-1.3.0/utils/exportfs/exports.man.orig nfs-utils-1.3.0/utils/exportfs/exports.man ---- nfs-utils-1.3.0/utils/exportfs/exports.man.orig 2017-11-03 07:45:47.000000000 -0400 -+++ nfs-utils-1.3.0/utils/exportfs/exports.man 2017-11-03 09:25:47.000000000 -0400 -@@ -410,7 +410,7 @@ of the filesystem must be handled elsewh - - .TP - .IR pnfs --This option allows enables the use of pNFS extension if protocol level -+This option enables the use of the pNFS extension if the protocol level - is NFSv4.1 or higher, and the filesystem supports pNFS exports. With - pNFS clients can bypass the server and perform I/O directly to storage - devices. The default can be explicitly requested with the -diff -up nfs-utils-1.3.0/utils/mount/nfs.man.orig nfs-utils-1.3.0/utils/mount/nfs.man ---- nfs-utils-1.3.0/utils/mount/nfs.man.orig 2017-11-03 07:45:47.000000000 -0400 -+++ nfs-utils-1.3.0/utils/mount/nfs.man 2017-11-03 09:23:20.000000000 -0400 -@@ -11,11 +11,8 @@ NFS is an Internet Standard protocol - created by Sun Microsystems in 1984. NFS was developed - to allow file sharing between systems residing - on a local area network. --The Linux NFS client supports three versions --of the NFS protocol: --NFS version 2 [RFC1094], --NFS version 3 [RFC1813], --and NFS version 4 [RFC3530]. -+Depending on kernel configuration, the Linux NFS client may -+support NFS versions 2, 3, 4.0, 4.1, or 4.2. - .P - The - .BR mount (8) -@@ -88,9 +85,8 @@ These options are valid to use with any - The NFS protocol version number used to contact the server's NFS service. - If the server does not support the requested version, the mount request - fails. --If this option is not specified, the client negotiates a suitable version --with --the server, trying version 4 first, version 3 second, and version 2 last. -+If this option is not specified, the client tries version 4.1 first, -+then negotiates down until it finds a version supported by the server. - .TP 1.5i - .BI vers= n - This option is an alternative to the -@@ -752,7 +748,7 @@ NOTE: When used together, the 'local_loc - by 'nolock'/'lock' mount option. - .SS "Options for NFS version 4 only" - Use these options, along with the options in the first subsection above, --for NFS version 4 and newer. -+for NFS version 4.0 and newer. - .TP 1.5i - .BI proto= netid - The -@@ -825,7 +821,7 @@ the behavior of this option in more deta - Specifies a single IPv4 address (in dotted-quad form), - or a non-link-local IPv6 address, - that the NFS client advertises to allow servers --to perform NFS version 4 callback requests against -+to perform NFS version 4.0 callback requests against - files on this mount point. If the server is unable to - establish callback connections to clients, performance - may degrade, or accesses to files may temporarily hang. -@@ -838,6 +834,11 @@ In the presence of multiple client netwo - special routing policies, - or atypical network topologies, - the exact address to use for callbacks may be nontrivial to determine. -+.IP -+NFS protocol versions 4.1 and 4.2 use the client-established -+TCP connection for callback requests, so do not require the server to -+connect to the client. This option is therefore only affect NFS version -+4.0 mounts. - .TP 1.5i - .BR migration " / " nomigration - Selects whether the client uses an identification string that is compatible -@@ -1726,7 +1727,7 @@ file system table - .TP 1.5i - .I /etc/nfsmount.conf - Configuration file for NFS mounts --.SH BUGS -+.SH NOTES - Before 2.4.7, the Linux NFS client did not support NFS over TCP. - .P - Before 2.4.20, the Linux NFS client used a heuristic -@@ -1745,9 +1746,9 @@ when the - .BR rsize " and " wsize - settings were smaller than the system's page size. - .P --The Linux NFS client does not yet support --certain optional features of the NFS version 4 protocol, --such as security negotiation, server referrals, and named attributes. -+The Linux client's support for protocol versions depend on whether the -+kernel was built with options CONFIG_NFS_V2, CONFIG_NFS_V3, -+CONFIG_NFS_V4, CONFIG_NFS_V4_1, and CONFIG_NFS_V4_2. - .SH "SEE ALSO" - .BR fstab (5), - .BR mount (8), -@@ -1780,4 +1781,8 @@ RFC 1833 for the RPC bind specification. - .br - RFC 2203 for the RPCSEC GSS API protocol specification. - .br --RFC 3530 for the NFS version 4 specification. -+RFC 7530 for the NFS version 4.0 specification. -+.br -+RFC 5661 for the NFS version 4.1 specification. -+.br -+RFC 7862 for the NFS version 4.2 specification. diff --git a/SOURCES/nfs-utils-1.3.0-nfsdcltrack-invalops.patch b/SOURCES/nfs-utils-1.3.0-nfsdcltrack-invalops.patch deleted file mode 100644 index f3d07a2..0000000 --- a/SOURCES/nfs-utils-1.3.0-nfsdcltrack-invalops.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff -up nfs-utils-1.3.0/utils/nfsdcltrack/nfsdcltrack.c.orig nfs-utils-1.3.0/utils/nfsdcltrack/nfsdcltrack.c ---- nfs-utils-1.3.0/utils/nfsdcltrack/nfsdcltrack.c.orig 2017-10-12 12:46:02.785182594 -0400 -+++ nfs-utils-1.3.0/utils/nfsdcltrack/nfsdcltrack.c 2017-10-12 13:30:35.756186324 -0400 -@@ -591,7 +591,7 @@ main(int argc, char **argv) - break; - default: - usage(progname); -- return 0; -+ return 1; - } - } - diff --git a/SOURCES/nfs-utils-1.3.0-nfsdcltrack-warning01.patch b/SOURCES/nfs-utils-1.3.0-nfsdcltrack-warning01.patch deleted file mode 100644 index 6a2ed40..0000000 --- a/SOURCES/nfs-utils-1.3.0-nfsdcltrack-warning01.patch +++ /dev/null @@ -1,24 +0,0 @@ -commit d6ee36b8dcc663dc2b797d51e553f390ea2f7e31 -Author: Steve Dickson -Date: Wed Jul 19 16:42:39 2017 -0400 - - nfsdcltrack.c: remove a warning - - nfsdcltrack.c:581:4: warning: this statement may fall through [-Wimplicit-fallthrough=] - - Acked-by: Jeff Layton - Signed-off-by: Steve Dickson - (cherry picked from commit f80c9984339da6f689f330b8a83d5ee503126827) - -diff --git a/utils/nfsdcltrack/nfsdcltrack.c b/utils/nfsdcltrack/nfsdcltrack.c -index 7af9efb..2f58f96 100644 ---- a/utils/nfsdcltrack/nfsdcltrack.c -+++ b/utils/nfsdcltrack/nfsdcltrack.c -@@ -581,6 +581,7 @@ main(int argc, char **argv) - switch (arg) { - case 'd': - xlog_config(D_ALL, 1); -+ break; - case 'f': - xlog_syslog(0); - xlog_stderr(1); diff --git a/SOURCES/nfs-utils-1.3.0-server-chgrpcpipefs.patch b/SOURCES/nfs-utils-1.3.0-server-chgrpcpipefs.patch deleted file mode 100644 index 473fab8..0000000 --- a/SOURCES/nfs-utils-1.3.0-server-chgrpcpipefs.patch +++ /dev/null @@ -1,935 +0,0 @@ -diff --git a/.gitignore b/.gitignore -index 3d9640d..d26f4be 100644 ---- a/.gitignore -+++ b/.gitignore -@@ -70,6 +70,8 @@ tests/nsm_client/nlm_sm_inter_svc.c - tests/nsm_client/nlm_sm_inter_xdr.c - utils/nfsidmap/nfsidmap - systemd/nfs-server-generator -+systemd/rpc-pipefs-generator -+systemd/rpc-gssd.service - # cscope database files - cscope.* - # generic editor backup et al -diff --git a/configure.ac b/configure.ac -index 3bce774..fce0e15 100644 ---- a/configure.ac -+++ b/configure.ac -@@ -498,8 +498,14 @@ AC_SUBST([AM_CFLAGS], ["$my_am_cflags"]) - # Make sure that $ACLOCAL_FLAGS are used during a rebuild - AC_SUBST([ACLOCAL_AMFLAGS], ["-I $ac_macro_dir \$(ACLOCAL_FLAGS)"]) - -+# make _sysconfdir available for substituion in config files -+# 2 "evals" needed late to expand variable names. -+AC_SUBST([_sysconfdir]) -+AC_CONFIG_COMMANDS_PRE([eval eval _sysconfdir=$sysconfdir]) -+ - AC_CONFIG_FILES([ - Makefile -+ systemd/rpc-gssd.service - linux-nfs/Makefile - support/Makefile - support/export/Makefile -diff --git a/nfs.conf b/nfs.conf -index c907de6..89cf386 100644 ---- a/nfs.conf -+++ b/nfs.conf -@@ -1,7 +1,10 @@ - # --# This is a general conifguration for the -+# This is a general configuration for the - # NFS daemons and tools - # -+#[general] -+# pipefs-directory=/var/lib/nfs/rpc_pipefs -+# - #[exportfs] - # debug=0 - # -@@ -12,7 +15,6 @@ - # limit-to-legacy-enctypes=0 - # context-timeout=0 - # rpc-timeout=5 --# pipefs-directory=/var/lib/nfs/rpc_pipefs - # keytab-file=/etc/krb5.keytab - # cred-cache-directory= - # preferred-realm= -diff --git a/support/include/xcommon.h b/support/include/xcommon.h -index d1a4b18..23c9a13 100644 ---- a/support/include/xcommon.h -+++ b/support/include/xcommon.h -@@ -17,6 +17,12 @@ - #include - #include - -+#ifdef MAJOR_IN_MKDEV -+#include -+#elif defined(MAJOR_IN_SYSMACROS) -+#include -+#endif -+ - #define streq(s, t) (strcmp ((s), (t)) == 0) - - /* Functions in sundries.c that are used in mount.c and umount.c */ -diff --git a/support/nfs/nfsexport.c b/support/nfs/nfsexport.c -index f129fd2..c1c736e 100644 ---- a/support/nfs/nfsexport.c -+++ b/support/nfs/nfsexport.c -@@ -18,6 +18,7 @@ - #include - - #include "nfslib.h" -+#include "xcommon.h" - - /* if /proc/net/rpc/... exists, then - * write to it, as that interface is more stable. -diff --git a/systemd/Makefile.am b/systemd/Makefile.am -index b789916..54a3b64 100644 ---- a/systemd/Makefile.am -+++ b/systemd/Makefile.am -@@ -8,6 +8,7 @@ unit_files = \ - nfs-blkmap.service \ - nfs-config.service \ - nfs-idmapd.service \ -+ rpc_pipefs.target \ - nfs-mountd.service \ - nfs-server.service \ - nfs-utils.service \ -@@ -24,14 +25,23 @@ EXTRA_DIST = $(unit_files) $(man5_MANS) $(man7_MANS) - unit_dir = /usr/lib/systemd/system - generator_dir = /usr/lib/systemd/system-generators - --EXTRA_PROGRAMS = nfs-server-generator -+EXTRA_PROGRAMS = nfs-server-generator rpc-pipefs-generator - genexecdir = $(generator_dir) -+ -+COMMON_SRCS = systemd.c systemd.h -+ -+nfs_server_generator_SOURCES = $(COMMON_SRCS) nfs-server-generator.c -+ -+rpc_pipefs_generator_SOURCES = $(COMMON_SRCS) rpc-pipefs-generator.c -+ - nfs_server_generator_LDADD = ../support/export/libexport.a \ - ../support/nfs/libnfs.a \ - ../support/misc/libmisc.a - -+rpc_pipefs_generator_LDADD = ../support/nfs/libnfs.a -+ - if INSTALL_SYSTEMD --genexec_PROGRAMS = nfs-server-generator -+genexec_PROGRAMS = nfs-server-generator rpc-pipefs-generator - install-data-hook: $(unit_files) - mkdir -p $(DESTDIR)/$(unitdir) - cp $(unit_files) $(DESTDIR)/$(unitdir) -diff --git a/systemd/nfs-blkmap.service b/systemd/nfs-blkmap.service -index ddbf4e9..c844e2d 100644 ---- a/systemd/nfs-blkmap.service -+++ b/systemd/nfs-blkmap.service -@@ -2,8 +2,8 @@ - Description=pNFS block layout mapping daemon - DefaultDependencies=no - Conflicts=umount.target --After=var-lib-nfs-rpc_pipefs.mount --Requires=var-lib-nfs-rpc_pipefs.mount -+After=rpc_pipefs.target -+Requires=rpc_pipefs.target - - PartOf=nfs-utils.service - -diff --git a/systemd/nfs-idmapd.service b/systemd/nfs-idmapd.service -index df3dd9d..38685b6 100644 ---- a/systemd/nfs-idmapd.service -+++ b/systemd/nfs-idmapd.service -@@ -1,8 +1,8 @@ - [Unit] - Description=NFSv4 ID-name mapping service - DefaultDependencies=no --Requires=var-lib-nfs-rpc_pipefs.mount --After=var-lib-nfs-rpc_pipefs.mount local-fs.target -+Requires=rpc_pipefs.target -+After=rpc_pipefs.target local-fs.target - - BindsTo=nfs-server.service - -diff --git a/systemd/nfs-server-generator.c b/systemd/nfs-server-generator.c -index 4aa6509..737f109 100644 ---- a/systemd/nfs-server-generator.c -+++ b/systemd/nfs-server-generator.c -@@ -29,6 +29,7 @@ - #include "misc.h" - #include "nfslib.h" - #include "exportfs.h" -+#include "systemd.h" - - /* A simple "set of strings" to remove duplicates - * found in /etc/exports -@@ -55,35 +56,6 @@ static int is_unique(struct list **lp, char *path) - return 1; - } - --/* We need to convert a path name to a systemd unit -- * name. This requires some translation ('/' -> '-') -- * and some escaping. -- */ --static void systemd_escape(FILE *f, char *path) --{ -- while (*path == '/') -- path++; -- if (!*path) { -- /* "/" becomes "-", otherwise leading "/" is ignored */ -- fputs("-", f); -- return; -- } -- while (*path) { -- char c = *path++; -- -- if (c == '/') { -- /* multiple non-trailing slashes become '-' */ -- while (*path == '/') -- path++; -- if (*path) -- fputs("-", f); -- } else if (isalnum(c) || c == ':' || c == '.') -- fputc(c, f); -- else -- fprintf(f, "\\x%02x", c & 0xff); -- } --} -- - static int has_noauto_flag(char *path) - { - FILE *fstab; -@@ -108,7 +80,7 @@ static int has_noauto_flag(char *path) - - int main(int argc, char *argv[]) - { -- char *path; -+ char *path, *spath; - char dirbase[] = "/nfs-server.service.d"; - char filebase[] = "/order-with-mounts.conf"; - nfs_export *exp; -@@ -167,9 +139,15 @@ int main(int argc, char *argv[]) - if (strcmp(mnt->mnt_type, "nfs") != 0 && - strcmp(mnt->mnt_type, "nfs4") != 0) - continue; -- fprintf(f, "Before= "); -- systemd_escape(f, mnt->mnt_dir); -- fprintf(f, ".mount\n"); -+ -+ spath = systemd_escape(mnt->mnt_dir, ".mount"); -+ if (!spath) { -+ fprintf(stderr, -+ "nfs-server-generator: convert path failed: %s\n", -+ mnt->mnt_dir); -+ continue; -+ } -+ fprintf(f, "Before=%s\n", spath); - } - - fclose(fstab); -diff --git a/systemd/nfs.conf.man b/systemd/nfs.conf.man -index 938b970..9700586 100644 ---- a/systemd/nfs.conf.man -+++ b/systemd/nfs.conf.man -@@ -96,6 +96,18 @@ value, which can be one or more from the list - .BR all . - When a list is given, the members should be comma-separated. - .TP -+.B general -+Recognized values: -+.BR pipefs-directory . -+ -+See -+.BR blkmapd (8), -+.BR rpc.idmapd (8), -+and -+.BR rpc.gssd (8) -+for details. -+ -+.TP - .B nfsdcltrack - Recognized values: - .BR storagedir . -@@ -198,7 +210,6 @@ Recognized values: - .BR limit-to-legacy-enctypes , - .BR context-timeout , - .BR rpc-timeout , --.BR pipefs-directory , - .BR keytab-file , - .BR cred-cache-directory , - .BR preferred-realm . -diff --git a/systemd/rpc-gssd.service b/systemd/rpc-gssd.service -deleted file mode 100644 -index 5d6d09f..0000000 ---- a/systemd/rpc-gssd.service -+++ /dev/null -@@ -1,19 +0,0 @@ --[Unit] --Description=RPC security service for NFS client and server --DefaultDependencies=no --Conflicts=umount.target --Requires=var-lib-nfs-rpc_pipefs.mount --After=var-lib-nfs-rpc_pipefs.mount gssproxy.service -- --ConditionPathExists=/etc/krb5.keytab -- --PartOf=nfs-utils.service -- --Wants=nfs-config.service --After=nfs-config.service -- --[Service] --EnvironmentFile=-/run/sysconfig/nfs-utils -- --Type=forking --ExecStart=/usr/sbin/rpc.gssd $GSSDARGS -diff --git a/systemd/rpc-gssd.service.in b/systemd/rpc-gssd.service.in -new file mode 100644 -index 0000000..c75ccbd ---- /dev/null -+++ b/systemd/rpc-gssd.service.in -@@ -0,0 +1,19 @@ -+[Unit] -+Description=RPC security service for NFS client and server -+DefaultDependencies=no -+Conflicts=umount.target -+Requires=rpc_pipefs.target -+After=rpc_pipefs.target gssproxy.service -+ -+ConditionPathExists=@_sysconfdir@/krb5.keytab -+ -+PartOf=nfs-utils.service -+ -+Wants=nfs-config.service -+After=nfs-config.service -+ -+[Service] -+EnvironmentFile=-/run/sysconfig/nfs-utils -+ -+Type=forking -+ExecStart=/usr/sbin/rpc.gssd $GSSDARGS -diff --git a/systemd/rpc-pipefs-generator.c b/systemd/rpc-pipefs-generator.c -new file mode 100644 -index 0000000..66addb9 ---- /dev/null -+++ b/systemd/rpc-pipefs-generator.c -@@ -0,0 +1,138 @@ -+/* -+ * rpc-pipefs-generator: -+ * systemd generator to create ordering dependencies between -+ * nfs services and the rpc_pipefs mountpoint -+ */ -+ -+#ifdef HAVE_CONFIG_H -+#include -+#endif -+ -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+ -+#include "nfslib.h" -+#include "conffile.h" -+#include "systemd.h" -+ -+#define RPC_PIPEFS_DEFAULT "/var/lib/nfs/rpc_pipefs" -+char *conf_path = NFS_CONFFILE; -+ -+static int generate_mount_unit(const char *pipefs_path, const char *pipefs_unit, -+ const char *dirname) -+{ -+ char *path; -+ FILE *f; -+ -+ path = malloc(strlen(dirname) + 1 + strlen(pipefs_unit)); -+ if (!path) -+ return 1; -+ sprintf(path, "%s/%s", dirname, pipefs_unit); -+ f = fopen(path, "w"); -+ if (!f) -+ return 1; -+ -+ fprintf(f, "# Automatically generated by rpc-pipefs-generator\n\n[Unit]\n"); -+ fprintf(f, "Description=RPC Pipe File System\n"); -+ fprintf(f, "DefaultDependencies=no\n"); -+ fprintf(f, "After=systemd-tmpfiles-setup.service\n"); -+ fprintf(f, "Conflicts=umount.target\n"); -+ fprintf(f, "\n[Mount]\n"); -+ fprintf(f, "What=sunrpc\n"); -+ fprintf(f, "Where=%s\n", pipefs_path); -+ fprintf(f, "Type=rpc_pipefs\n"); -+ -+ fclose(f); -+ return 0; -+} -+ -+static -+int generate_target(char *pipefs_path, const char *dirname) -+{ -+ char *path; -+ char filebase[] = "/rpc_pipefs.target"; -+ char *pipefs_unit; -+ FILE *f; -+ int ret = 0; -+ -+ pipefs_unit = systemd_escape(pipefs_path, ".mount"); -+ if (!pipefs_unit) -+ return 1; -+ -+ ret = generate_mount_unit(pipefs_path, pipefs_unit, dirname); -+ if (ret) -+ return ret; -+ -+ path = malloc(strlen(dirname) + 1 + sizeof(filebase)); -+ if (!path) -+ return 2; -+ sprintf(path, "%s", dirname); -+ mkdir(path, 0755); -+ strcat(path, filebase); -+ f = fopen(path, "w"); -+ if (!f) -+ return 1; -+ -+ fprintf(f, "# Automatically generated by rpc-pipefs-generator\n\n[Unit]\n"); -+ fprintf(f, "Requires=%s\n", pipefs_unit); -+ fprintf(f, "After=%s\n", pipefs_unit); -+ fclose(f); -+ -+ return 0; -+} -+ -+static int is_non_pipefs_mountpoint(char *path) -+{ -+ FILE *mtab; -+ struct mntent *mnt; -+ -+ mtab = setmntent("/etc/mtab", "r"); -+ if (!mtab) -+ return 0; -+ -+ while ((mnt = getmntent(mtab)) != NULL) { -+ if (strlen(mnt->mnt_dir) != strlen(path)) -+ continue; -+ if (strncmp(mnt->mnt_dir, path, strlen(mnt->mnt_dir))) -+ continue; -+ if (strncmp(mnt->mnt_type, "rpc_pipefs", strlen(mnt->mnt_type))) -+ break; -+ } -+ fclose(mtab); -+ return mnt != NULL; -+} -+ -+int main(int argc, char *argv[]) -+{ -+ int ret; -+ char *s; -+ -+ /* Avoid using any external services */ -+ xlog_syslog(0); -+ -+ if (argc != 4 || argv[1][0] != '/') { -+ fprintf(stderr, "rpc-pipefs-generator: create systemd dependencies for nfs services\n"); -+ fprintf(stderr, "Usage: normal-dir early-dir late-dir\n"); -+ exit(1); -+ } -+ -+ conf_init(); -+ s = conf_get_str("general", "pipefs-directory"); -+ if (!s) -+ exit(0); -+ if (strlen(s) == strlen(RPC_PIPEFS_DEFAULT) && -+ strcmp(s, RPC_PIPEFS_DEFAULT) == 0) -+ exit(0); -+ -+ if (is_non_pipefs_mountpoint(s)) -+ exit(1); -+ -+ ret = generate_target(s, argv[1]); -+ exit(ret); -+} -diff --git a/systemd/rpc-svcgssd.service b/systemd/rpc-svcgssd.service -index 41177b6..a3a555c 100644 ---- a/systemd/rpc-svcgssd.service -+++ b/systemd/rpc-svcgssd.service -@@ -1,8 +1,7 @@ - [Unit] - Description=RPC security service for NFS server - DefaultDependencies=no --Requires=var-lib-nfs-rpc_pipefs.mount --After=var-lib-nfs-rpc_pipefs.mount local-fs.target -+After=local-fs.target - PartOf=nfs-server.service - PartOf=nfs-utils.service - -diff --git a/systemd/rpc_pipefs.target b/systemd/rpc_pipefs.target -new file mode 100644 -index 0000000..01d4d27 ---- /dev/null -+++ b/systemd/rpc_pipefs.target -@@ -0,0 +1,3 @@ -+[Unit] -+Requires=var-lib-nfs-rpc_pipefs.mount -+After=var-lib-nfs-rpc_pipefs.mount -diff --git a/systemd/systemd.c b/systemd/systemd.c -new file mode 100644 -index 0000000..17820d4 ---- /dev/null -+++ b/systemd/systemd.c -@@ -0,0 +1,133 @@ -+/* -+ * Helper functions for systemd generators in nfs-utils. -+ * -+ * Currently just systemd_escape(). -+ */ -+ -+#include -+#include -+#include -+#include -+ -+static const char hex[16] = -+{ -+ '0', '1', '2', '3', '4', '5', '6', '7', -+ '8', '9', 'a', 'b', 'c', 'd', 'e', 'f', -+}; -+ -+/* -+ * determine length of the string that systemd_escape() needs to allocate -+ */ -+static int systemd_len(char *path) -+{ -+ char *p; -+ int len = 0; -+ -+ p = path; -+ while (*p == '/') -+ /* multiple leading "/" are ignored */ -+ p++; -+ -+ if (!*p) -+ /* root directory "/" becomes is encoded as a single "-" */ -+ return 1; -+ -+ if (*p == '.') -+ /* -+ * replace "." with "\x2d" escape sequence if -+ * it's the first character in escaped path -+ * */ -+ len += 4; -+ -+ while (*p) { -+ unsigned char c = *p++; -+ -+ if (c == '/') { -+ /* multiple non-trailing slashes become '-' */ -+ while (*p == '/') -+ p++; -+ if (*p) -+ len++; -+ } else if (isalnum(c) || c == ':' || c == '.' || c == '_') -+ /* these characters are not replaced */ -+ len++; -+ else -+ /* replace with "\x2d" escape sequence */ -+ len += 4; -+ } -+ -+ return len; -+} -+ -+/* -+ * convert c to "\x2d" escape sequence and append to string -+ * at position p, advancing p -+ */ -+static char *hexify(unsigned char c, char *p) -+{ -+ *p++ = '\\'; -+ *p++ = 'x'; -+ *p++ = hex[c >> 4]; -+ *p++ = hex[c & 0xf]; -+ return p; -+} -+ -+/* -+ * convert a path to a unit name according to the logic in systemd.unit(5): -+ * -+ * Basically, given a path, "/" is replaced by "-", and all other -+ * characters which are not ASCII alphanumerics are replaced by C-style -+ * "\x2d" escapes (except that "_" is never replaced and "." is only -+ * replaced when it would be the first character in the escaped path). -+ * The root directory "/" is encoded as single dash, while otherwise the -+ * initial and ending "/" are removed from all paths during -+ * transformation. -+ * -+ * NB: Although the systemd.unit(5) doesn't mention it, the ':' character -+ * is not escaped. -+ */ -+char *systemd_escape(char *path, char *suffix) -+{ -+ char *result; -+ char *p; -+ int len; -+ -+ len = systemd_len(path); -+ result = malloc(len + strlen(suffix) + 1); -+ p = result; -+ while (*path == '/') -+ /* multiple leading "/" are ignored */ -+ path++; -+ if (!*path) { -+ /* root directory "/" becomes is encoded as a single "-" */ -+ *p++ = '-'; -+ goto out; -+ } -+ if (*path == '.') -+ /* -+ * replace "." with "\x2d" escape sequence if -+ * it's the first character in escaped path -+ * */ -+ p = hexify(*path++, p); -+ -+ while (*path) { -+ unsigned char c = *path++; -+ -+ if (c == '/') { -+ /* multiple non-trailing slashes become '-' */ -+ while (*path == '/') -+ path++; -+ if (*path) -+ *p++ = '-'; -+ } else if (isalnum(c) || c == ':' || c == '.' || c == '_') -+ /* these characters are not replaced */ -+ *p++ = c; -+ else -+ /* replace with "\x2d" escape sequence */ -+ p = hexify(c, p); -+ } -+ -+out: -+ sprintf(p, "%s", suffix); -+ return result; -+} -diff --git a/systemd/systemd.h b/systemd/systemd.h -new file mode 100644 -index 0000000..25235ec ---- /dev/null -+++ b/systemd/systemd.h -@@ -0,0 +1,6 @@ -+#ifndef SYSTEMD_H -+#define SYSTEMD_H -+ -+char *systemd_escape(char *path, char *suffix); -+ -+#endif /* SYSTEMD_H */ -diff --git a/utils/blkmapd/blkmapd.man b/utils/blkmapd/blkmapd.man -index 914b80f..4b3d3f0 100644 ---- a/utils/blkmapd/blkmapd.man -+++ b/utils/blkmapd/blkmapd.man -@@ -43,9 +43,24 @@ Performs device discovery only then exits. - Runs - .B blkmapd - in the foreground and sends output to stderr (as opposed to syslogd) -+.SH CONFIGURATION FILE -+The -+.B blkmapd -+daemon recognizes the following value from the -+.B [general] -+section of the -+.I /etc/nfs.conf -+configuration file: -+.TP -+.B pipefs-directory -+Tells -+.B blkmapd -+where to look for the rpc_pipefs filesystem. The default value is -+.IR /var/lib/nfs/rpc_pipefs . - .SH SEE ALSO - .BR nfs (5), --.BR dmsetup (8) -+.BR dmsetup (8), -+.BR nfs.conf (5) - .sp - RFC 5661 for the NFS version 4.1 specification. - .br -diff --git a/utils/blkmapd/device-discovery.c b/utils/blkmapd/device-discovery.c -index b010628..a419947 100644 ---- a/utils/blkmapd/device-discovery.c -+++ b/utils/blkmapd/device-discovery.c -@@ -50,19 +50,36 @@ - #include - #include - -+#ifdef HAVE_CONFIG_H -+#include "config.h" -+#endif /* HAVE_CONFIG_H */ -+ - #include "device-discovery.h" -+#include "xcommon.h" -+#include "nfslib.h" -+#include "conffile.h" - - #define EVENT_SIZE (sizeof(struct inotify_event)) - #define EVENT_BUFSIZE (1024 * EVENT_SIZE) - --#define BL_PIPE_FILE "/var/lib/nfs/rpc_pipefs/nfs/blocklayout" --#define NFSPIPE_DIR "/var/lib/nfs/rpc_pipefs/nfs" - #define RPCPIPE_DIR "/var/lib/nfs/rpc_pipefs" - #define PID_FILE "/var/run/blkmapd.pid" - -+#define CONF_SAVE(w, f) do { \ -+ char *p = f; \ -+ if (p != NULL) \ -+ (w) = p; \ -+} while (0) -+ -+static char bl_pipe_file[PATH_MAX]; -+static char nfspipe_dir[PATH_MAX]; -+static char rpcpipe_dir[PATH_MAX]; -+ - struct bl_disk *visible_disk_list; - int bl_watch_fd, bl_pipe_fd, nfs_pipedir_wfd, rpc_pipedir_wfd; - int pidfd = -1; -+char *conf_path = NULL; -+ - - struct bl_disk_path *bl_get_path(const char *filepath, - struct bl_disk_path *paths) -@@ -357,8 +374,8 @@ static void bl_rpcpipe_cb(void) - continue; - if (event->mask & IN_CREATE) { - BL_LOG_WARNING("nfs pipe dir created\n"); -- bl_watch_dir(NFSPIPE_DIR, &nfs_pipedir_wfd); -- bl_pipe_fd = open(BL_PIPE_FILE, O_RDWR); -+ bl_watch_dir(nfspipe_dir, &nfs_pipedir_wfd); -+ bl_pipe_fd = open(bl_pipe_file, O_RDWR); - } else if (event->mask & IN_DELETE) { - BL_LOG_WARNING("nfs pipe dir deleted\n"); - inotify_rm_watch(bl_watch_fd, nfs_pipedir_wfd); -@@ -371,7 +388,7 @@ static void bl_rpcpipe_cb(void) - continue; - if (event->mask & IN_CREATE) { - BL_LOG_WARNING("blocklayout pipe file created\n"); -- bl_pipe_fd = open(BL_PIPE_FILE, O_RDWR); -+ bl_pipe_fd = open(bl_pipe_file, O_RDWR); - if (bl_pipe_fd < 0) - BL_LOG_ERR("open %s failed: %s\n", - event->name, strerror(errno)); -@@ -437,6 +454,19 @@ int main(int argc, char **argv) - int opt, dflag = 0, fg = 0, ret = 1; - struct stat statbuf; - char pidbuf[64]; -+ char *xrpcpipe_dir = NULL; -+ -+ strncpy(rpcpipe_dir, RPCPIPE_DIR, sizeof(rpcpipe_dir)); -+ conf_path = NFS_CONFFILE; -+ conf_init(); -+ CONF_SAVE(xrpcpipe_dir, conf_get_str("general", "pipefs-directory")); -+ if (xrpcpipe_dir != NULL) -+ strlcpy(rpcpipe_dir, xrpcpipe_dir, sizeof(rpcpipe_dir)); -+ -+ strncpy(nfspipe_dir, rpcpipe_dir, sizeof(nfspipe_dir)); -+ strlcat(nfspipe_dir, "/nfs", sizeof(nfspipe_dir)); -+ strncpy(bl_pipe_file, rpcpipe_dir, sizeof(bl_pipe_file)); -+ strlcat(bl_pipe_file, "/nfs/blocklayout", sizeof(bl_pipe_file)); - - while ((opt = getopt(argc, argv, "hdf")) != -1) { - switch (opt) { -@@ -501,12 +531,12 @@ int main(int argc, char **argv) - } - - /* open pipe file */ -- bl_watch_dir(RPCPIPE_DIR, &rpc_pipedir_wfd); -- bl_watch_dir(NFSPIPE_DIR, &nfs_pipedir_wfd); -+ bl_watch_dir(rpcpipe_dir, &rpc_pipedir_wfd); -+ bl_watch_dir(nfspipe_dir, &nfs_pipedir_wfd); - -- bl_pipe_fd = open(BL_PIPE_FILE, O_RDWR); -+ bl_pipe_fd = open(bl_pipe_file, O_RDWR); - if (bl_pipe_fd < 0) -- BL_LOG_ERR("open pipe file %s failed: %s\n", BL_PIPE_FILE, strerror(errno)); -+ BL_LOG_ERR("open pipe file %s failed: %s\n", bl_pipe_file, strerror(errno)); - - while (1) { - /* discover device when needed */ -diff --git a/utils/gssd/gssd.c b/utils/gssd/gssd.c -index c5c03fb..10d50d3 100644 ---- a/utils/gssd/gssd.c -+++ b/utils/gssd/gssd.c -@@ -857,6 +857,10 @@ read_gss_conf(void) - s = conf_get_str("gssd", "pipefs-directory"); - if (!s) - s = conf_get_str("general", "pipefs-directory"); -+ else -+ printerr(0, "WARNING: Specifying pipefs-directory in the [gssd] " -+ "section of %s is deprecated. Use the [general] " -+ "section instead.", NFS_CONFFILE); - if (s) - pipefs_path = s; - s = conf_get_str("gssd", "keytab-file"); -diff --git a/utils/gssd/gssd.man b/utils/gssd/gssd.man -index 87eef02..e620f0d 100644 ---- a/utils/gssd/gssd.man -+++ b/utils/gssd/gssd.man -@@ -335,10 +335,6 @@ Equivalent to - Equivalent to - .BR -t . - .TP --.B pipefs-directory --Equivalent to --.BR -p . --.TP - .B keytab-file - Equivalent to - .BR -k . -@@ -350,6 +346,14 @@ Equivalent to - .B preferred-realm - Equivalent to - .BR -R . -+.P -+In addtion, the following value is recognized from the -+.B [general] -+section: -+.TP -+.B pipefs-directory -+Equivalent to -+.BR -p . - - .SH SEE ALSO - .BR rpc.svcgssd (8), -diff --git a/utils/idmapd/idmapd.c b/utils/idmapd/idmapd.c -index f55d2e1..03efbea 100644 ---- a/utils/idmapd/idmapd.c -+++ b/utils/idmapd/idmapd.c -@@ -166,7 +166,7 @@ static uid_t nobodyuid; - static gid_t nobodygid; - - /* Used by conffile.c in libnfs.a */ --char *conf_path; -+char *conf_path = NULL; - - static int - flush_nfsd_cache(char *path, time_t now) -@@ -220,7 +220,6 @@ main(int argc, char **argv) - int ret; - char *progname; - -- conf_path = _PATH_IDMAPDCONF; - nobodyuser = NFS4NOBODY_USER; - nobodygroup = NFS4NOBODY_GROUP; - strlcpy(pipefsdir, PIPEFS_DIR, sizeof(pipefsdir)); -@@ -234,8 +233,11 @@ main(int argc, char **argv) - #define GETOPTSTR "hvfd:p:U:G:c:CS" - opterr=0; /* Turn off error messages */ - while ((opt = getopt(argc, argv, GETOPTSTR)) != -1) { -- if (opt == 'c') -+ if (opt == 'c') { -+ warnx("-c is deprecated and may be removed in the " -+ "future. See idmapd(8)."); - conf_path = optarg; -+ } - if (opt == '?') { - if (strchr(GETOPTSTR, optopt)) - warnx("'-%c' option requires an argument.", optopt); -@@ -247,17 +249,33 @@ main(int argc, char **argv) - } - optind = 1; - -- if (stat(conf_path, &sb) == -1 && (errno == ENOENT || errno == EACCES)) { -- warn("Skipping configuration file \"%s\"", conf_path); -- conf_path = NULL; -+ if (conf_path) { /* deprecated -c option was specified */ -+ if (stat(conf_path, &sb) == -1 && (errno == ENOENT || errno == EACCES)) { -+ warn("Skipping configuration file \"%s\"", conf_path); -+ conf_path = NULL; -+ } else { -+ conf_init(); -+ verbose = conf_get_num("General", "Verbosity", 0); -+ cache_entry_expiration = conf_get_num("General", -+ "Cache-Expiration", DEFAULT_IDMAP_CACHE_EXPIRY); -+ CONF_SAVE(xpipefsdir, conf_get_str("General", "Pipefs-Directory")); -+ if (xpipefsdir != NULL) -+ strlcpy(pipefsdir, xpipefsdir, sizeof(pipefsdir)); -+ CONF_SAVE(nobodyuser, conf_get_str("Mapping", "Nobody-User")); -+ CONF_SAVE(nobodygroup, conf_get_str("Mapping", "Nobody-Group")); -+ } - } else { -+ conf_path = NFS_CONFFILE; - conf_init(); -- verbose = conf_get_num("General", "Verbosity", 0); -- cache_entry_expiration = conf_get_num("General", -- "Cache-Expiration", DEFAULT_IDMAP_CACHE_EXPIRY); - CONF_SAVE(xpipefsdir, conf_get_str("General", "Pipefs-Directory")); - if (xpipefsdir != NULL) - strlcpy(pipefsdir, xpipefsdir, sizeof(pipefsdir)); -+ -+ conf_path = _PATH_IDMAPDCONF; -+ conf_init(); -+ verbose = conf_get_num("General", "Verbosity", 0); -+ cache_entry_expiration = conf_get_num("General", -+ "cache-expiration", DEFAULT_IDMAP_CACHE_EXPIRY); - CONF_SAVE(nobodyuser, conf_get_str("Mapping", "Nobody-User")); - CONF_SAVE(nobodygroup, conf_get_str("Mapping", "Nobody-Group")); - } -diff --git a/utils/idmapd/idmapd.man b/utils/idmapd/idmapd.man -index b9200c7..fb5fc1e 100644 ---- a/utils/idmapd/idmapd.man -+++ b/utils/idmapd/idmapd.man -@@ -50,11 +50,28 @@ The default value is \&"/var/lib/nfs/rpc_pipefs\&". - .It Fl c Ar path - Use configuration file - .Ar path . -+This option is deprecated. - .It Fl C - Client-only: perform no idmapping for any NFS server, even if one is detected. - .It Fl S - Server-only: perform no idmapping for any NFS client, even if one is detected. - .El -+.Sh CONFIGURATION FILES -+.Nm -+recognizes the following value from the -+.Sy [general] -+section of the -+.Pa /etc/nfs.conf -+configuration file: -+.Bl -tag -width Ds_imagedir -+.It Sy pipefs-directory -+Equivalent to -+.Sy -p . -+.El -+.Pp -+All other settings related to id mapping are found in the -+.Pa /etc/idmapd.conf -+configuration file. - .Sh EXAMPLES - .Cm rpc.idmapd -f -vvv - .Pp -@@ -71,9 +88,11 @@ messages to console, and with a verbosity level of 3. - .\" This next request is for sections 1, 6, 7 & 8 only. - .\" .Sh ENVIRONMENT - .Sh FILES --.Pa /etc/idmapd.conf -+.Pa /etc/idmapd.conf , -+.Pa /etc/nfs.conf - .Sh SEE ALSO - .Xr idmapd.conf 5 , -+.Xr nfs.conf 5 , - .Xr nfsidmap 8 - .\".Sh SEE ALSO - .\".Xr nylon.conf 4 -diff --git a/utils/mountd/cache.c b/utils/mountd/cache.c -index 3bc13ca..f23fb5a 100644 ---- a/utils/mountd/cache.c -+++ b/utils/mountd/cache.c -@@ -31,6 +31,7 @@ - #include "mountd.h" - #include "fsloc.h" - #include "pseudoflavors.h" -+#include "xcommon.h" - - #ifdef USE_BLKID - #include "blkid/blkid.h" diff --git a/SPECS/nfs-utils.spec b/SPECS/nfs-utils.spec index 6dfddc0..7b83227 100644 --- a/SPECS/nfs-utils.spec +++ b/SPECS/nfs-utils.spec @@ -2,7 +2,7 @@ Summary: NFS utilities and supporting clients and daemons for the kernel NFS ser Name: nfs-utils URL: http://sourceforge.net/projects/nfs Version: 1.3.0 -Release: 0.54%{?dist} +Release: 0.48%{?dist}.3 Epoch: 1 # group all 32bit related archs @@ -126,19 +126,12 @@ Patch095: nfs-utils-1.3.0-mount-use-minor-default.patch Patch096: nfs-utils-1.3.0-mount-restore-econn.patch Patch097: nfs-utils-1.3.0-exportfs-path-comp.patch # -# RHEL7.5 +# RHEL7.4-Z # -Patch098: nfs-utils-1.3.0-mount-eacces.patch -Patch099: nfs-utils-1.3.0-mount-minorversion.patch -Patch100: nfs-utils-1.3.0-mountstats-shebang.patch -Patch101: nfs-utils-1.3.0-nfsdcltrack-warning01.patch -Patch102: nfs-utils-1.3.0-mount-addressfailed.patch -Patch103: nfs-utils-1.3.0-mount-nfsvers.patch -Patch104: nfs-utils-1.3.0-server-chgrpcpipefs.patch -Patch105: nfs-utils-1.3.0-nfsdcltrack-invalops.patch -Patch106: nfs-utils-1.3.0-nfs-man-v2.patch -Patch107: nfs-utils-1.3.0-nfs-iostat-no-dev.patch -Patch108: nfs-utils-1.3.0-mount-t-nfs4.patch +Patch098: nfs-utils-1.3.0-mount-addressfailed.patch +Patch099: nfs-utils-1.3.0-mount-eacces.patch +Patch100: nfs-utils-1.3.0-mount-minorversion.patch +Patch101: nfs-utils-1.3.0-mount-t-nfs4.patch Patch1000: nfs-utils-1.2.1-statdpath-man.patch Patch1001: nfs-utils-1.2.1-exp-subtree-warn-off.patch @@ -390,28 +383,14 @@ This package also contains the mount.nfs and umount.nfs program. %patch096 -p1 # 1389046 Pacemaker node fenced out due to redundant export... %patch097 -p1 -# 1479573 - RHEL7.4: NFS mount to DELL/EMC Isilon servers fails... +# 1498959 - RHEL7.4: service nfs-server start fails the first time... %patch098 -p1 -# 1489262 - nfs-utils: minorversion can't work +# 1518718 - RHEL7.4: NFS mount to DELL/EMC Isilon servers fails... %patch099 -p1 -# 987031 - nfs-utils - shebang with /usr/bin/env +# 1547681 - nfs-utils: minorversion can't work %patch100 -p1 -# 1475462 - nfsdcltrack -d should log to syslog without... +# 1551927 - Incorrect NFS version string reported for NFSv4.2 mounts %patch101 -p1 -# 1450528 - RHEL7.4: service nfs-server start fails the first... -%patch102 -p1 -# 1496822 - mount.nfs calls mount() with nfsvers setting from... -%patch103 -p1 -# 1358333 - nfs-server: Possibility to change rpc_pipefs mount point -%patch104 -p1 -# 1461349 - nfsdcltrack should return error code instead of 0.... -%patch105 -p1 -# 1452461 - NFSv2 is supported at RHEL 7 nfs server end after making... -%patch106 -p1 -# 1508046 - nfsiostat errors on 'no device mounted on /sys/kernel/debug... -%patch107 -p1 -# 1547506 - Incorrect NFS version string reported for NFSv4.2 mounts -%patch108 -p1 %patch1000 -p1 %patch1001 -p1 @@ -656,7 +635,6 @@ fi %{_unitdir}/* %attr(755,root,root) /usr/lib/systemd/scripts/nfs-utils_env.sh %{_prefix}/lib/systemd/system-generators/nfs-server-generator -%{_prefix}/lib/systemd/system-generators/rpc-pipefs-generator %attr(4755,root,root) /sbin/mount.nfs /sbin/mount.nfs4 @@ -664,29 +642,17 @@ fi /sbin/umount.nfs4 %changelog -* Thu Feb 22 2018 Steve Dickson 1.3.0-0.54 -- mount: move handling of "-t nfs4" into nfs_nfs_version() (bz 1547506) +* Wed Mar 14 2018 Steve Dickson 1.3.0-0.48_4.3 +- mount: move handling of "-t nfs4" into nfs_nfs_version() (bz 1551927) -* Tue Jan 2 2018 Steve Dickson 1.3.0-0.53 -- nfs(5): updated mount information to say 4.1 (bz 1452461) +* Thu Feb 22 2018 Steve Dickson 1.3.0-0.48_4.2 +- mount: Fix problems with parsing minorversion= (bz 1547681) -* Fri Nov 3 2017 Steve Dickson 1.3.0-0.52 -- nfs(5): update some version information (bz 1452461) -- nfsiostat: avoid parsing "no device mounted ..." line (bz 1508046) +* Thu Nov 30 2017 Steve Dickson 1.3.0-0.48_4.1 +- mount: handle EACCES during version negotiation (bz 1518718) -* Thu Oct 12 2017 Steve Dickson 1.3.0-0.51 -- systemd: add a generator for the rpc_pipefs mountpoint (bz 1358333) -- nfsdcltrack: return an non-zero value for invalid options (bz 1461349) - -* Thu Oct 5 2017 Steve Dickson 1.3.0-0.50 +* Fri Oct 6 2017 Steve Dickson 1.3.0-0.48_4 - rpc.nfsd: Do not fail when all address families are not support (bz 1450528) -- mount.nfs: merge in vers= and nfsvers= options (bz 1496822) - -* Tue Sep 19 2017 Steve Dickson 1.3.0-0.49 -- mount: handle EACCES during version negotiation (bz 1479573) -- mount: Fix problems with parsing minorversion= (bz 1489262) -- mountstats: Remove a shebang (bz 987031) -- nfsdcltrack: remove a warning (bz 1475462) * Mon Jun 19 2017 Steve Dickson 1.3.0-0.48 - exportfs: fix path comparison in unexportfs_parsed() (bz 1389046)