[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