]> git.pld-linux.org Git - packages/nfs-utils.git/commitdiff
- fix compatibility with kernels not supporting NFS vers 4.1 and 4.2 auto/th/nfs-utils-1.2.9-2
authorJan Rękorajski <baggins@pld-linux.org>
Wed, 18 Dec 2013 06:46:35 +0000 (07:46 +0100)
committerJan Rękorajski <baggins@pld-linux.org>
Wed, 18 Dec 2013 06:46:35 +0000 (07:46 +0100)
- rel 2

fix-minorversion.patch [new file with mode: 0644]
nfs-utils.spec

diff --git a/fix-minorversion.patch b/fix-minorversion.patch
new file mode 100644 (file)
index 0000000..43cf541
--- /dev/null
@@ -0,0 +1,109 @@
+From: "J. Bruce Fields" <bfields@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@transmode.se>
+Reported-by: Joakim Tjernlund <joakim.tjernlund@transmode.se>
+Signed-off-by: J. Bruce Fields <bfields@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@vger.kernel.org
+More majordomo info at  http://vger.kernel.org/majordomo-info.html
index 738ab19a62c4e618234af434e394f49f75d2d8f5..a8838685b95ebd6d18127809699b934aa57c2706 100644 (file)
@@ -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}
This page took 0.110761 seconds and 4 git commands to generate.