[packages/nfs-utils] - fix compatibility with kernels not supporting NFS vers 4.1 and 4.2 - rel 2

baggins baggins at pld-linux.org
Wed Dec 18 07:47:06 CET 2013


commit f47abd796d6b10b923b62dda8eda2ca058b6d183
Author: Jan Rękorajski <baggins at pld-linux.org>
Date:   Wed Dec 18 07:46:35 2013 +0100

    - fix compatibility with kernels not supporting NFS vers 4.1 and 4.2
    - rel 2

 fix-minorversion.patch | 109 +++++++++++++++++++++++++++++++++++++++++++++++++
 nfs-utils.spec         |   4 +-
 2 files changed, 112 insertions(+), 1 deletion(-)
---
diff --git a/nfs-utils.spec b/nfs-utils.spec
index 738ab19..a883868 100644
--- a/nfs-utils.spec
+++ b/nfs-utils.spec
@@ -10,7 +10,7 @@ Summary(ru.UTF-8):	Утилиты для NFS и демоны поддержки
 Summary(uk.UTF-8):	Утиліти для NFS та демони підтримки для NFS-сервера ядра
 Name:		nfs-utils
 Version:	1.2.9
-Release:	1
+Release:	2
 License:	GPL v2
 Group:		Networking/Daemons
 #Source0:	https://www.kernel.org/pub/linux/utils/nfs/%{name}-%{version}.tar.bz2
@@ -48,6 +48,7 @@ Patch1:		%{name}-statdpath.patch
 Patch2:		%{name}-subsys.patch
 Patch3:		%{name}-union-mount.patch
 Patch4:		%{name}-heimdal.patch
+Patch5:		fix-minorversion.patch
 URL:		http://nfs.sourceforge.net/
 BuildRequires:	autoconf >= 2.59
 BuildRequires:	automake
@@ -187,6 +188,7 @@ Wspólne programy do obsługi NFS.
 %patch2 -p1
 %patch3 -p1
 %patch4 -p1
+%patch5 -p1
 
 %build
 %{__libtoolize}
diff --git a/fix-minorversion.patch b/fix-minorversion.patch
new file mode 100644
index 0000000..43cf541
--- /dev/null
+++ b/fix-minorversion.patch
@@ -0,0 +1,109 @@
+From: "J. Bruce Fields" <bfields at redhat.com>
+
+By unconditionally adding +/-4.2 to the version string written to the
+kernel we make nfs-utils incompatible with pre-4.2-supporting kernels.
+
+Ditto for 4.1.  This problem was introduced by
+12a590f8d556c00a9502eeebaa763d906222d521 "rpc.nfsd: Allow v4.2 server
+support with the -V option", which also change nfsd to unconditionally
+pass +/-4.2.
+
+Instead, just don't mention 4.1 or 4.2 unless the commandline has
+specifically requested that one or the other be turned on or off.
+
+Tested-by: Joakim Tjernlund <joakim.tjernlund at transmode.se>
+Reported-by: Joakim Tjernlund <joakim.tjernlund at transmode.se>
+Signed-off-by: J. Bruce Fields <bfields at redhat.com>
+---
+ support/include/nfs/nfs.h | 1 -
+ utils/nfsd/nfsd.c         | 6 +++---
+ utils/nfsd/nfssvc.c       | 6 +++---
+ utils/nfsd/nfssvc.h       | 2 +-
+ 4 files changed, 7 insertions(+), 8 deletions(-)
+
+diff --git a/support/include/nfs/nfs.h b/support/include/nfs/nfs.h
+index 38db5b5..df4ad76 100644
+--- a/support/include/nfs/nfs.h
++++ b/support/include/nfs/nfs.h
+@@ -17,7 +17,6 @@
+ 
+ #define NFS4_MINMINOR 1
+ #define NFS4_MAXMINOR 2
+-#define NFS4_VERDEFAULT  0x1  /* minor verion 1 */
+ 
+ struct nfs_fh_len {
+ 	int		fh_size;
+diff --git a/utils/nfsd/nfsd.c b/utils/nfsd/nfsd.c
+index 6db92f0..a9d77ab 100644
+--- a/utils/nfsd/nfsd.c
++++ b/utils/nfsd/nfsd.c
+@@ -99,7 +99,7 @@ main(int argc, char **argv)
+ 	char *p, *progname, *port;
+ 	char *haddr = NULL;
+ 	int	socket_up = 0;
+-	int minorvers = NFS4_VERDEFAULT;	/* nfsv4 minor version */
++	int minorvers[NFS4_MAXMINOR + 1] = {0};
+ 	unsigned int versbits = NFSCTL_VERDEFAULT;
+ 	unsigned int protobits = NFSCTL_ALLBITS;
+ 	unsigned int proto4 = 0;
+@@ -164,7 +164,7 @@ main(int argc, char **argv)
+ 						fprintf(stderr, "%s: unsupported minor version\n", optarg);
+ 						exit(1);
+ 					}
+-					NFSCTL_VERUNSET(minorvers, i);
++					minorvers[i] = -1;
+ 					break;
+ 				}
+ 			case 3:
+@@ -185,7 +185,7 @@ main(int argc, char **argv)
+ 						fprintf(stderr, "%s: unsupported minor version\n", optarg);
+ 						exit(1);
+ 					}
+-					NFSCTL_VERSET(minorvers, i);
++					minorvers[i] = 1;
+ 					break;
+ 				}
+ 			case 3:
+diff --git a/utils/nfsd/nfssvc.c b/utils/nfsd/nfssvc.c
+index 8b85846..1b50aba 100644
+--- a/utils/nfsd/nfssvc.c
++++ b/utils/nfsd/nfssvc.c
+@@ -269,7 +269,7 @@ nfssvc_set_sockets(const int family, const unsigned int protobits,
+ }
+ 
+ void
+-nfssvc_setvers(unsigned int ctlbits, int minorvers)
++nfssvc_setvers(unsigned int ctlbits, int minorvers[])
+ {
+ 	int fd, n, off;
+ 	char *ptr;
+@@ -281,9 +281,9 @@ nfssvc_setvers(unsigned int ctlbits, int minorvers)
+ 		return;
+ 
+ 	for (n = NFS4_MINMINOR; n <= NFS4_MAXMINOR; n++) {
+-		if (NFSCTL_VERISSET(minorvers, n)) 
++		if (minorvers[n] == 1)
+ 			off += snprintf(ptr+off, sizeof(buf) - off, "+4.%d ", n);
+-		else			
++		else if (minorvers[n] == -1)
+ 			off += snprintf(ptr+off, sizeof(buf) - off, "-4.%d ", n);
+ 	}
+ 	for (n = NFSD_MINVERS; n <= NFSD_MAXVERS; n++) {
+diff --git a/utils/nfsd/nfssvc.h b/utils/nfsd/nfssvc.h
+index 08de0fe..2bbd3d3 100644
+--- a/utils/nfsd/nfssvc.h
++++ b/utils/nfsd/nfssvc.h
+@@ -24,5 +24,5 @@ void	nfssvc_mount_nfsdfs(char *progname);
+ int	nfssvc_inuse(void);
+ int	nfssvc_set_sockets(const int family, const unsigned int protobits,
+ 			   const char *host, const char *port);
+-void	nfssvc_setvers(unsigned int ctlbits, int minorvers4);
++void	nfssvc_setvers(unsigned int ctlbits, int minorvers4[]);
+ int	nfssvc_threads(unsigned short port, int nrservs);
+-- 
+1.8.3.1
+
+--
+To unsubscribe from this list: send the line "unsubscribe linux-nfs" in
+the body of a message to majordomo at vger.kernel.org
+More majordomo info at  http://vger.kernel.org/majordomo-info.html
================================================================

---- gitweb:

http://git.pld-linux.org/gitweb.cgi/packages/nfs-utils.git/commitdiff/f47abd796d6b10b923b62dda8eda2ca058b6d183



More information about the pld-cvs-commit mailing list