Hello community,

here is the log from the commit of package nfs-utils for openSUSE:Factory 
checked in at 2014-03-20 06:53:35
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/nfs-utils (Old)
 and      /work/SRC/openSUSE:Factory/.nfs-utils.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "nfs-utils"

Changes:
--------
--- /work/SRC/openSUSE:Factory/nfs-utils/nfs-utils.changes      2014-02-19 
18:55:01.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.nfs-utils.new/nfs-utils.changes 2014-03-20 
06:53:37.000000000 +0100
@@ -1,0 +2,19 @@
+Tue Mar 11 00:11:18 UTC 2014 - [email protected]
+
+- properly rename patches:
+  udp-fallback.fix -> udp-fallback-fix.patch
+  fedfs-lib-name -> fedfs-lib-name.patch
+  gssd-mount-hang-fix -> gssd-mount-hang-fix.patch
+
+-------------------------------------------------------------------
+Sun Mar  9 23:00:19 UTC 2014 - [email protected]
+
+- Remove "Start-Before: autofs" from nfs.init.  This turns
+  out not to be needed, and is out of place.  If anything,
+  autofs should declare a dependency on nfs. (bnc#861489)
+- fedfs-lib-name, nfs-utils.spec
+  Build with fedfs support so that if fedfs-utils is also
+  installed, federated-filesystems can be exported.
+  (FATE#313522)
+
+-------------------------------------------------------------------

Old:
----
  gssd-mount-hang-fix
  udp-fallback.fix

New:
----
  fedfs-lib-name.patch
  gssd-mount-hang-fix.patch
  udp-fallback-fix.patch

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ nfs-utils.spec ++++++
--- /var/tmp/diff_new_pack.ol6mKU/_old  2014-03-20 06:53:38.000000000 +0100
+++ /var/tmp/diff_new_pack.ol6mKU/_new  2014-03-20 06:53:38.000000000 +0100
@@ -34,6 +34,9 @@
 %if 0%{?suse_version} >= 1210
 BuildRequires:  systemd
 %endif
+%if 0%{?suse_version} >= 1310
+BuildRequires:  fedfs-utils-devel
+%endif
 Url:            http://kernel.org/pub/linux/utils/nfs-utils/
 Summary:        Support Utilities for Kernel nfsd
 License:        GPL-2.0+
@@ -81,10 +84,13 @@
 Patch9:         exportfs-exit-with-error-code-if-there-was-any-error.patch
 # PATCH-FIX_UPSTREAM 
exportfs-report-failure-if-asked-to-unexport-somethi.patch [email protected]
 Patch10:        exportfs-report-failure-if-asked-to-unexport-somethi.patch
-# PATCH-FIX-UPSTREAM gssd-mount-hang-fix bnc#833543 [email protected]
-Patch11:        gssd-mount-hang-fix
-# PATCH-FIX-UPSTREAM udp-fallback.fix bnc#863749 [email protected]
-Patch12:        udp-fallback.fix
+# PATCH-FIX-UPSTREAM gssd-mount-hang-fix.patch bnc#833543 [email protected]
+Patch11:        gssd-mount-hang-fix.patch
+# PATCH-FIX-UPSTREAM udp-fallback-fix.patch bnc#863749 [email protected]
+Patch12:        udp-fallback-fix.patch
+# PATCH-FIX-UPSTREAM fedfs-lib-name.patch [email protected]
+Patch13:        fedfs-lib-name.patch
+
 Suggests:       python-base
 
 %description
@@ -148,6 +154,7 @@
 %patch10 -p1
 %patch11 -p1
 %patch12 -p1
+%patch13 -p1
 cp %{S:6} .
 
 %build

++++++ fedfs-lib-name.patch ++++++
>From 878972d60cb55f2bc6e04a0937f81407fbc308fe Mon Sep 17 00:00:00 2001
From: Neil Brown <[email protected]>
Date: Wed, 5 Mar 2014 14:55:46 +1100
Subject: [PATCH] mountd: use SONAME fir libnfsjunct when loading with dlopen.

The standard for loading shared libraries is to identify them by their
"soname" (Which "objdump -x $BINARY | grep SONAME" will report).
However mountd currently loads using the "linker name" which should only
be used when building new code.

Future releases of fedfs-utils will define the soname in the include
file, so if that is defined, use it.  If not, use the soname of the
first version: "libnfsjunct.so.0".

This is a slight behavioural change.  However all distros known to
package fedfs-utils will install "libnfsjunct.so.0" whenever they
install the old name of "libnfsjunct.so", and "make install" will
install both.  So it should not be a noticeable change.

Also only test the JP_API_VERSION if it is defined.  As the version is
embedded in the soname, a secondary test is not needed.

Cc: Chuck Lever <[email protected]>
Signed-off-by: NeilBrown <[email protected]>

---
 utils/mountd/cache.c |    9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)

--- nfs-utils-1.2.8.orig/utils/mountd/cache.c
+++ nfs-utils-1.2.8/utils/mountd/cache.c
@@ -1055,12 +1055,13 @@ static struct exportent *invoke_junction
                        __func__, error);
                return NULL;
        }
+#ifdef JP_API_VERSION
        if (ops->jp_api_version != JP_API_VERSION) {
                xlog(D_GENERAL, "%s: unrecognized junction API version: %u",
                        __func__, ops->jp_api_version);
                return NULL;
        }
-
+#endif
        status = ops->jp_init(false);
        if (status != JP_OK) {
                xlog(D_GENERAL, "%s: failed to resolve %s: %s",
@@ -1107,7 +1108,11 @@ static struct exportent *lookup_junction
        struct link_map *map;
        void *handle;
 
-       handle = dlopen("libnfsjunct.so", RTLD_NOW);
+#ifdef JP_NFSPLUGIN_SONAME
+       handle = dlopen(JP_NFSPLUGIN_SONAME, RTLD_NOW);
+#else
+       handle = dlopen("libnfsjunct.so.0", RTLD_NOW);
+#endif
        if (handle == NULL) {
                xlog(D_GENERAL, "%s: dlopen: %s", __func__, dlerror());
                return NULL;
++++++ gssd-mount-hang-fix.patch ++++++
From: Neil Brown <[email protected]>
Date: Thu, 14 Nov 2013 11:50:38 +1100
Subject: [PATCH] gssd: always reply to rpc-pipe requests from kernel.
References: bnc#833543

Sometimes gssd will open a new rpc-pipe but never read requests from it
or reply to them.  This causes the kernel to wait forever for a reply.

In particular, if a filesystem is mounted by IP, and the IP has no
hostname recorded in /etc/hosts or DNS, then gssd will not listen to
requests and the mount will hang indefinitely.

The comment in process_clnt_dir() for the "fail_keep_client:" branch
suggests that it is for the case where we couldn't open some
subdirectories.  However it is currently also taken if reverse DNS
lookup fails (as well as some other lookup failures).  Those failures
should not be treated the same as failure-to-open directories.

So this patch causes a failure from read_service_info() to *not* be
reported by process_clnt_dir_files.  This ensures that insert_clnt_poll()
will be called and requests will be handled.

In handle_gssd_upcall, the current error path (taken when the mech is
not "krb5") does not reply to the upcall.  This is wrong.  A reply is
always appropriate.  The only replies which aren't treated as
transient errors are EACCES and EKEYEXPIRED, so we return the former.

If read_service_info() fails then ->servicename will be NULL which will
cause process_krb5_upcall() (quite reasonably) to become confused.  So
in that case we don't even try to process the up-call but just reply
with EACCES.

As clp->servicename==NULL is no longer treated as fatal, it is not
appropraite to use it to test if read_service_info() has been already
called on a client.  Instread test clp->prog.

Finally, the error path of read_service_info() will close 'fd' if it
isn't -1, so when we close it, we should set fd to -1.

Signed-off-by: NeilBrown <[email protected]>

diff --git a/utils/gssd/gssd_proc.c b/utils/gssd/gssd_proc.c
index b48d1637cd36..00b4bc779b7c 100644
--- a/utils/gssd/gssd_proc.c
+++ b/utils/gssd/gssd_proc.c
@@ -256,6 +256,7 @@ read_service_info(char *info_file_name, char **servicename, 
char **servername,
        if ((nbytes = read(fd, buf, INFOBUFLEN)) == -1)
                goto fail;
        close(fd);
+       fd = -1;
        buf[nbytes] = '\0';
 
        numfields = sscanf(buf,"RPC server: %127s\n"
@@ -403,11 +404,10 @@ process_clnt_dir_files(struct clnt_info * clp)
                return -1;
        snprintf(info_file_name, sizeof(info_file_name), "%s/info",
                        clp->dirname);
-       if ((clp->servicename == NULL) &&
-            read_service_info(info_file_name, &clp->servicename,
-                               &clp->servername, &clp->prog, &clp->vers,
-                               &clp->protocol, (struct sockaddr *) &clp->addr))
-               return -1;
+       if (clp->prog == 0)
+               read_service_info(info_file_name, &clp->servicename,
+                                 &clp->servername, &clp->prog, &clp->vers,
+                                 &clp->protocol, (struct sockaddr *) 
&clp->addr);
        return 0;
 }
 
@@ -1320,11 +1320,14 @@ handle_gssd_upcall(struct clnt_info *clp)
                }
        }
 
-       if (strcmp(mech, "krb5") == 0)
+       if (strcmp(mech, "krb5") == 0 && clp->servername)
                process_krb5_upcall(clp, uid, clp->gssd_fd, target, service);
-       else
-               printerr(0, "WARNING: handle_gssd_upcall: "
-                           "received unknown gss mech '%s'\n", mech);
+       else {
+               if (clp->servername)
+                       printerr(0, "WARNING: handle_gssd_upcall: "
+                                "received unknown gss mech '%s'\n", mech);
+               do_error_downcall(clp->gssd_fd, uid, -EACCES);
+       }
 
 out:
        free(lbuf);

++++++ nfs.init ++++++
--- /var/tmp/diff_new_pack.ol6mKU/_old  2014-03-20 06:53:39.000000000 +0100
+++ /var/tmp/diff_new_pack.ol6mKU/_new  2014-03-20 06:53:39.000000000 +0100
@@ -15,7 +15,6 @@
 # Provides:       nfs
 # Required-Start: $network $portmap
 # Required-Stop:  $network $portmap
-# X-Start-Before: +autofs
 # Default-Start:  3 5
 # Default-Stop:   0 1 2 6
 # Short-Description: NFS client services

++++++ udp-fallback-fix.patch ++++++
From: NeilBrown <[email protected]>
Subject: Fix fallback from tcp to udp
References: bnc#863749

Protocol negotiation in mount.nfs does not correctly negotiate with a
server which only support NFSv3 and UDP.

When mount.nfs attempts an NFSv4 mount and fails with ECONNREFUSED
it does not fall back to NFSv3, as this is not recognised as a
"does not support NFSv4" error.
However ECONNREFUSED is a clear indication that the server doesn't
support TCP, and ipso facto does not support NFSv4.
So ECONNREFUSED should trigger a fallback from v4 to v2/3.

Once we allow that error, NFSv3 is attempted and mount.nfs talks to
rpcbind and discovers that UDP should be used for v3 and the mount
succeeds.

Signed-off-by: NeilBrown <[email protected]>
Reported-by: Carsten Ziepke <[email protected]>
---
 utils/mount/stropts.c |    3 +++
 1 file changed, 3 insertions(+)

--- nfs-utils-1.2.8.orig/utils/mount/stropts.c
+++ nfs-utils-1.2.8/utils/mount/stropts.c
@@ -807,6 +807,9 @@ static int nfs_autonegotiate(struct nfsm
                /* Linux servers prior to 2.6.25 may return
                 * EPERM when NFS version 4 is not supported. */
                goto fall_back;
+       case ECONNREFUSED:
+               /* UDP-Only server won't support v4 */
+               goto fall_back;
        default:
                return result;
        }
-- 
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to