[nfs-utils] Updated to latest upstream RC release: nfs-utils-1-3-2-rc2 (bz 1115179)

Steve Dickson steved at fedoraproject.org
Tue Nov 4 20:56:42 UTC 2014


commit a534dda09376de792b0f7dfe92bca3f080a23ee4
Author: Steve Dickson <steved at redhat.com>
Date:   Tue Nov 4 15:49:16 2014 -0500

    Updated to latest upstream RC release: nfs-utils-1-3-2-rc2 (bz 1115179)
    
    Signed-off-by: Steve Dickson <steved at redhat.com>

 nfs-utils-1.3.2-rc2.patch |  246 +++++++++++++++++++++++++++++++++++++++++++++
 nfs-utils.spec            |    7 +-
 2 files changed, 251 insertions(+), 2 deletions(-)
---
diff --git a/nfs-utils-1.3.2-rc2.patch b/nfs-utils-1.3.2-rc2.patch
new file mode 100644
index 0000000..b377f9e
--- /dev/null
+++ b/nfs-utils-1.3.2-rc2.patch
@@ -0,0 +1,246 @@
+diff --git a/support/export/client.c b/support/export/client.c
+index f85e11c..95156f0 100644
+--- a/support/export/client.c
++++ b/support/export/client.c
+@@ -277,7 +277,7 @@ client_lookup(char *hname, int canonical)
+ 	if (htype == MCL_FQDN && !canonical) {
+ 		ai = host_addrinfo(hname);
+ 		if (!ai) {
+-			xlog(L_ERROR, "Failed to resolve %s", hname);
++			xlog(L_WARNING, "Failed to resolve %s", hname);
+ 			goto out;
+ 		}
+ 		hname = ai->ai_canonname;
+diff --git a/support/export/export.c b/support/export/export.c
+index 6b1d045..ce714d4 100644
+--- a/support/export/export.c
++++ b/support/export/export.c
+@@ -76,15 +76,22 @@ export_read(char *fname)
+ 	struct exportent	*eep;
+ 	nfs_export		*exp;
+ 
++	int volumes = 0;
++
+ 	setexportent(fname, "r");
+ 	while ((eep = getexportent(0,1)) != NULL) {
+ 		exp = export_lookup(eep->e_hostname, eep->e_path, 0);
+-		if (!exp)
+-			export_create(eep, 0);
++		if (!exp) {
++			exp = export_create(eep, 0);
++			if (exp)
++				volumes++;
++		}
+ 		else
+ 			warn_duplicated_exports(exp, eep);
+ 	}
+ 	endexportent();
++	if (volumes == 0)
++		xlog(L_ERROR, "No file systems exported!");
+ }
+ 
+ /**
+diff --git a/support/export/hostname.c b/support/export/hostname.c
+index d9153e1..169baa5 100644
+--- a/support/export/hostname.c
++++ b/support/export/hostname.c
+@@ -177,11 +177,11 @@ host_addrinfo(const char *hostname)
+ 	case 0:
+ 		return ai;
+ 	case EAI_SYSTEM:
+-		xlog(D_GENERAL, "%s: failed to resolve %s: (%d) %m",
++		xlog(D_PARSE, "%s: failed to resolve %s: (%d) %m",
+ 				__func__, hostname, errno);
+ 		break;
+ 	default:
+-		xlog(D_GENERAL, "%s: failed to resolve %s: %s",
++		xlog(D_PARSE, "%s: failed to resolve %s: %s",
+ 				__func__, hostname, gai_strerror(error));
+ 		break;
+ 	}
+diff --git a/systemd/auth-rpcgss-module.service b/systemd/auth-rpcgss-module.service
+index 3fc2f4a..0355e13 100644
+--- a/systemd/auth-rpcgss-module.service
++++ b/systemd/auth-rpcgss-module.service
+@@ -6,7 +6,8 @@
+ # unit will fail.  But that's OK.)
+ [Unit]
+ Description=Kernel Module supporting RPCSEC_GSS
+-Before=gssproxy.service rpc-svcgssd.service
++Before=gssproxy.service rpc-svcgssd.service rpc-gssd.service
++Wants=gssproxy.service rpc-svcgssd.service rpc-gssd.service
+ ConditionPathExists=/etc/krb5.keytab
+ 
+ [Service]
+diff --git a/systemd/nfs-client.target b/systemd/nfs-client.target
+index 474f5e9..9b792a3 100644
+--- a/systemd/nfs-client.target
++++ b/systemd/nfs-client.target
+@@ -5,9 +5,12 @@ Wants=remote-fs-pre.target
+ 
+ # Note: we don't "Wants=rpc-statd.service" as "mount.nfs" will arrange to
+ # start that on demand if needed.
+-Wants=rpc-gssd.service rpc-svcgssd.service auth-rpcgss-module.service
+ Wants=nfs-blkmap.service rpc-statd-notify.service
+-Before=rpc-gssd.service rpc-svcgssd.service nfs-blkmap.service
++After=nfs-blkmap.service
++
++# GSS services dependencies and ordering
++Wants=auth-rpcgss-module.service
++After=rpc-gssd.service rpc-svcgssd.service gssproxy.service
+ 
+ [Install]
+ WantedBy=multi-user.target
+diff --git a/systemd/nfs-server.service b/systemd/nfs-server.service
+index 1048c5c..8010aad 100644
+--- a/systemd/nfs-server.service
++++ b/systemd/nfs-server.service
+@@ -2,15 +2,17 @@
+ Description=NFS server and services
+ Requires= network.target proc-fs-nfsd.mount rpcbind.target
+ Requires= nfs-mountd.service
+-Wants=rpc-statd.service nfs-idmapd.service auth-rpcgss-module.service
+-Wants=rpc-gssd.service gssproxy.service rpc-svcgssd.service
++Wants=rpc-statd.service nfs-idmapd.service
+ Wants=rpc-statd-notify.service
+ 
+ After= network.target proc-fs-nfsd.mount rpcbind.target nfs-mountd.service
+ After= nfs-idmapd.service rpc-statd.service
+-After= rpc-gssd.service gssproxy.service rpc-svcgssd.service
+ Before= rpc-statd-notify.service
+ 
++# GSS services dependencies and ordering
++Wants=auth-rpcgss-module.service
++After=rpc-gssd.service gssproxy.service rpc-svcgssd.service
++
+ Wants=nfs-config.service
+ After=nfs-config.service
+ 
+diff --git a/tools/mountstats/mountstats.py b/tools/mountstats/mountstats.py
+index 1fb3e2f..9a6ec43 100644
+--- a/tools/mountstats/mountstats.py
++++ b/tools/mountstats/mountstats.py
+@@ -272,8 +272,11 @@ class DeviceData:
+                 print('%s:' % op)
+                 print('\t%d ops (%d%%)' % \
+                     (count, ((count * 100) / sends)), end=' ')
+-                print('\t%d retrans (%d%%)' % (retrans, ((retrans * 100) / count)), end=' ')
+-                print('\t%d major timeouts' % stats[2])
++                if retrans != 0:
++                    print('\t%d retrans (%d%%)' % (retrans, ((retrans * 100) / count)), end=' ')
++                    print('\t%d major timeouts' % stats[2])
++                else:
++                    print('')
+                 print('\tavg bytes sent per op: %d\tavg bytes received per op: %d' % \
+                     (stats[3] / count, stats[4] / count))
+                 print('\tbacklog wait: %f' % (float(stats[5]) / count), end=' ')
+diff --git a/utils/mount/mount_libmount.c b/utils/mount/mount_libmount.c
+index 6f85dc9..fa46d54 100644
+--- a/utils/mount/mount_libmount.c
++++ b/utils/mount/mount_libmount.c
+@@ -174,7 +174,7 @@ static int umount_main(struct libmnt_context *cxt, int argc, char **argv)
+ {
+ 	int rc, c;
+ 	char *spec = NULL, *opts = NULL;
+-	int ret = EX_FAIL;
++	int ret = EX_FAIL, verbose = 0;
+ 
+ 	static const struct option longopts[] = {
+ 		{ "force", 0, 0, 'f' },
+@@ -201,6 +201,8 @@ static int umount_main(struct libmnt_context *cxt, int argc, char **argv)
+ 		return EX_USAGE;
+ 	}
+ 
++	verbose = mnt_context_is_verbose(cxt);
++
+ 	if (optind < argc)
+ 		spec = argv[optind++];
+ 
+@@ -228,6 +230,10 @@ static int umount_main(struct libmnt_context *cxt, int argc, char **argv)
+ 		goto err;
+ 	}
+ 
++	if (verbose)
++		printf(_("%s: %s mount point detected\n"), spec,
++					mnt_context_get_fstype(cxt));
++
+ 	opts = retrieve_mount_options(mnt_context_get_fs(cxt));
+ 
+ 	if (!mnt_context_is_lazy(cxt)) {
+@@ -263,6 +269,12 @@ static int umount_main(struct libmnt_context *cxt, int argc, char **argv)
+ 	}
+ 	ret = EX_SUCCESS;
+ err:
++	if (verbose) {
++		if (ret == EX_SUCCESS)
++			printf(_("%s: umounted\n"), spec);
++		else
++			printf(_("%s: umount failed\n"), spec);
++	}
+ 	free(opts);
+ 	return ret;
+ }
+diff --git a/utils/nfsidmap/nfsidmap.c b/utils/nfsidmap/nfsidmap.c
+index e0d31e7..5d62078 100644
+--- a/utils/nfsidmap/nfsidmap.c
++++ b/utils/nfsidmap/nfsidmap.c
+@@ -25,7 +25,7 @@ char *usage="Usage: %s [-v] [-c || [-u|-g|-r key] || [-t timeout] key desc]";
+ 
+ #define PROCKEYS "/proc/keys"
+ #ifndef DEFAULT_KEYRING
+-#define DEFAULT_KEYRING "id_resolver"
++#define DEFAULT_KEYRING ".id_resolver"
+ #endif
+ 
+ #ifndef PATH_IDMAPDCONF
+@@ -209,10 +209,23 @@ static int key_invalidate(char *keystr, int keymask)
+ 		*(strchr(buf, ' ')) = '\0';
+ 		sscanf(buf, "%x", &key);
+ 
+-		if (keyctl_invalidate(key) < 0) {
+-			xlog_err("keyctl_invalidate(0x%x) failed: %m", key);
+-			fclose(fp);
+-			return 1;
++/* older libkeyutils compatibility */
++#ifndef KEYCTL_INVALIDATE
++#define KEYCTL_INVALIDATE 21      /* invalidate a key */
++#endif
++		if (keyctl(KEYCTL_INVALIDATE, key) < 0) {
++			if (errno != EOPNOTSUPP) {
++				xlog_err("keyctl_invalidate(0x%x) failed: %m", key);
++				fclose(fp);
++				return 1;
++			} else {
++				/* older kernel compatibility attempt: */
++				if (keyctl_revoke(key) < 0) {
++					xlog_err("keyctl_revoke(0x%x) failed: %m", key);
++					fclose(fp);
++					return 1;
++				}
++			}
+ 		}
+ 
+ 		keymask &= ~mask;
+@@ -316,6 +329,9 @@ int main(int argc, char **argv)
+ 			key, type, value, timeout);
+ 	}
+ 
++	/* Become a possesor of the to-be-instantiated key to set the key's timeout */
++	request_key("keyring", DEFAULT_KEYRING, NULL, KEY_SPEC_THREAD_KEYRING);
++
+ 	if (strcmp(type, "uid") == 0)
+ 		rc = id_lookup(value, key, USER);
+ 	else if (strcmp(type, "gid") == 0)
+diff --git a/utils/nfsstat/nfsstat.c b/utils/nfsstat/nfsstat.c
+index 18e4d27..9f481db 100644
+--- a/utils/nfsstat/nfsstat.c
++++ b/utils/nfsstat/nfsstat.c
+@@ -558,7 +558,7 @@ print_server_stats(int opt_prt)
+ 			;
+ 		} else {
+ 			print_numbers(LABEL_srvrpc
+-				"calls      badcalls   badclnt    badauth    xdrcall\n",
++				"calls      badcalls   badfmt     badauth    badclnt\n",
+ 				srvrpcinfo, 5);
+ 			printf("\n");
+ 		}
diff --git a/nfs-utils.spec b/nfs-utils.spec
index 311df0b..b2092fb 100644
--- a/nfs-utils.spec
+++ b/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.1
-Release: 1.2%{?dist}
+Release: 2.0%{?dist}
 Epoch: 1
 
 # group all 32bit related archs
@@ -15,7 +15,7 @@ Source2: nfs.sysconfig
 Source3: nfs-utils_env.sh
 Source4: lockd.conf
 
-Patch001: nfs-utils-1.3.2-rc1.patch
+Patch001: nfs-utils-1.3.2-rc2.patch
 
 Patch100: nfs-utils-1.2.1-statdpath-man.patch
 Patch101: nfs-utils-1.2.1-exp-subtree-warn-off.patch
@@ -283,6 +283,9 @@ fi
 /sbin/umount.nfs4
 
 %changelog
+* Tue Nov  4 2014 Steve Dickson <steved at redhat.com> 1.3.1-2.0
+- Updated to latest upstream RC release: nfs-utils-1-3-2-rc2 (bz 1115179)
+
 * Tue Nov  4 2014 Steve Dickson <steved at redhat.com> 1.3.1-1.2
 - Rebuild with new glibc (bz 1158846)
 


More information about the scm-commits mailing list