Hello community,

here is the log from the commit of package nfs-utils for openSUSE:Factory 
checked in at 2013-11-15 13:29:45
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
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      2013-10-22 
10:20:48.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.nfs-utils.new/nfs-utils.changes 2013-11-15 
13:29:46.000000000 +0100
@@ -1,0 +2,14 @@
+Wed Nov  6 02:06:45 UTC 2013 - [email protected]
+
+- nfs-utils.spec: add various systemd macros to make
+  sure init scripts are registered properly
+  bnc#845475
+- nfs.int, nfsserver.init: run gssd on server as well
+  as on client.  This is needed for NFSv4.0 callbacks.
+  bnc#845269
+- exportfs-exit-with-error-code-if-there-was-any-error.patch
+- exportfs-report-failure-if-asked-to-unexport-somethi.patch
+  Return good error code from exportfs.
+  bnc#846064
+
+-------------------------------------------------------------------

New:
----
  exportfs-exit-with-error-code-if-there-was-any-error.patch
  exportfs-report-failure-if-asked-to-unexport-somethi.patch

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

Other differences:
------------------
++++++ nfs-utils.spec ++++++
--- /var/tmp/diff_new_pack.aeq4u2/_old  2013-11-15 13:29:47.000000000 +0100
+++ /var/tmp/diff_new_pack.aeq4u2/_new  2013-11-15 13:29:47.000000000 +0100
@@ -31,6 +31,9 @@
 BuildRequires:  pkgconfig
 BuildRequires:  sqlite3-devel
 BuildRequires:  tcpd-devel
+%if 0%{?suse_version} >= 1210
+BuildRequires:  systemd
+%endif
 Url:            http://kernel.org/pub/linux/utils/nfs-utils/
 Summary:        Support Utilities for Kernel nfsd
 License:        GPL-2.0+
@@ -39,6 +42,7 @@
 Release:        0
 BuildRoot:      %{_tmppath}/%{name}-%{version}-build
 PreReq:         %fillup_prereq %insserv_prereq
+%{?systemd_requires}
 BuildRoot:      %{_tmppath}/%{name}-%{version}-build
 Source0:        
http://kernel.org/pub/linux/utils/nfs-utils/%{version}/nfs-utils-%{version}.tar.bz2
 # Download does not work:
@@ -73,6 +77,10 @@
 Patch7:         skip-on-ENOENT.patch
 # PATCH-FIX-UPSTREAM 
mountd-fix-bug-affecting-exports-of-dirs-with-64bit-.patch [email protected]
 Patch8:         mountd-fix-bug-affecting-exports-of-dirs-with-64bit-.patch
+# PATCH-FIX-UPSTREAM 
exportfs-exit-with-error-code-if-there-was-any-error.patch [email protected]
+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
 Suggests:       python-base
 
 %description
@@ -131,6 +139,8 @@
 %patch6 -p1
 %patch7 -p1
 %patch8 -p1
+%patch9 -p1
+%patch10 -p1
 cp %{S:6} .
 
 %build
@@ -194,6 +204,7 @@
 %pre -n nfs-client
 useradd -r -c 'NFS statd daemon' \
     -s /sbin/nologin -d /var/lib/nfs -g nogroup statd &> /dev/null || :
+%service_add_pre nfs
 
 %post -n nfs-client
 chown statd:nogroup /var/lib/nfs
@@ -211,20 +222,27 @@
 %{fillup_and_insserv -n nfs nfs}
 #
 %set_permissions /sbin/mount.nfs
+%service_add_post nfs
 
 %preun -n nfs-client
 %stop_on_removal nfs
+%service_del_preun nfs
 
 %postun -n nfs-client
 %restart_on_update nfs
 [ -x /sbin/mkinitrd_setup ] && mkinitrd_setup
 %insserv_cleanup
+%service_del_postun nfs
 
 %verifyscript -n nfs-client
 %verify_permissions -e /sbin/mount.nfs
 
+%pre -n nfs-kernel-server
+%service_add_pre nfsserver
+
 %preun -n nfs-kernel-server
 %stop_on_removal nfsserver
+%service_del_preun nfsserver
 
 %post -n nfs-kernel-server
 ### migrate from /var/lock/subsys
@@ -237,10 +255,12 @@
 fi
 ###
 %{fillup_and_insserv nfsserver}
+%service_add_post nfsserver
 
 %postun -n nfs-kernel-server
 %restart_on_update nfsserver
 %insserv_cleanup
+%service_del_postun nfsserver
 
 %files -n nfs-client
 %defattr(-,root,root)

++++++ exportfs-exit-with-error-code-if-there-was-any-error.patch ++++++
>From e10ddcb9d913f7938fc37c72568eea4e8287ade4 Mon Sep 17 00:00:00 2001
From: Neil Brown <[email protected]>
Date: Mon, 21 Oct 2013 17:40:55 +1100
Subject: [PATCH] exportfs: exit with error code if there was any error.
Reference: bnc#846064

exportfs currently exits with a non-zero error for some errors,
but not for others.

It does this by having various support routines set the global
variable "export_errno".

Change this to have 'xlog' set export_errno if an ERROR is
reported.  That way all errors will be caught.

Note that the exit error code is changed from 22 (EINVAL)
to the more traditional '1'.

Signed-off-by: NeilBrown <[email protected]>
---
 support/include/exportfs.h |    3 ---
 support/include/xlog.h     |    1 +
 support/nfs/exports.c      |    6 ------
 support/nfs/xlog.c         |    4 ++++
 utils/exportfs/exportfs.c  |    2 --
 5 files changed, 5 insertions(+), 11 deletions(-)

--- nfs-utils-1.2.8.orig/support/include/exportfs.h
+++ nfs-utils-1.2.8/support/include/exportfs.h
@@ -179,7 +179,4 @@ struct export_features {
 struct export_features *get_export_features(void);
 void fix_pseudoflavor_flags(struct exportent *ep);
 
-/* Record export error.  */
-extern int export_errno;
-
 #endif /* EXPORTFS_H */
--- nfs-utils-1.2.8.orig/support/include/xlog.h
+++ nfs-utils-1.2.8/support/include/xlog.h
@@ -35,6 +35,7 @@ struct xlog_debugfac {
        int             df_fac;
 };
 
+extern int export_errno;
 void                   xlog_open(char *progname);
 void                   xlog_stderr(int on);
 void                   xlog_syslog(int on);
--- nfs-utils-1.2.8.orig/support/nfs/exports.c
+++ nfs-utils-1.2.8/support/nfs/exports.c
@@ -47,8 +47,6 @@ struct flav_info flav_map[] = {
 
 const int flav_map_size = sizeof(flav_map)/sizeof(flav_map[0]);
 
-int export_errno;
-
 static char    *efname = NULL;
 static XFILE   *efp = NULL;
 static int     first;
@@ -132,7 +130,6 @@ getexportent(int fromkernel, int fromexp
        }
        if (ok < 0) {
                xlog(L_ERROR, "expected client(options...)");
-               export_errno = EINVAL;
                return NULL;
        }
        first = 0;
@@ -152,7 +149,6 @@ getexportent(int fromkernel, int fromexp
                ok = getexport(exp, sizeof(exp));
                if (ok < 0) {
                        xlog(L_ERROR, "expected client(options...)");
-                       export_errno = EINVAL;
                        return NULL;
                }
        }
@@ -172,7 +168,6 @@ getexportent(int fromkernel, int fromexp
                *opt++ = '\0';
                if (!(sp = strchr(opt, ')')) || sp[1] != '\0') {
                        syntaxerr("bad option list");
-                       export_errno = EINVAL;
                        return NULL;
                }
                *sp = '\0';
@@ -567,7 +562,6 @@ parseopts(char *cp, struct exportent *ep
                                     flname, flline, opt);      
 bad_option:
                                free(opt);
-                               export_errno = EINVAL;
                                return -1;
                        }
                } else if (strncmp(opt, "anongid=", 8) == 0) {
--- nfs-utils-1.2.8.orig/support/nfs/xlog.c
+++ nfs-utils-1.2.8/support/nfs/xlog.c
@@ -38,6 +38,8 @@ static int  logmask = 0;              /* What will b
 static char log_name[256];             /* name of this program         */
 static int  log_pid = -1;              /* PID of this program          */
 
+int export_errno = 0;
+
 static void    xlog_toggle(int sig);
 static struct xlog_debugfac    debugnames[] = {
        { "general",    D_GENERAL, },
@@ -189,6 +191,8 @@ void
 xlog(int kind, const char* fmt, ...)
 {
        va_list args;
+       if (kind & (L_ERROR|D_GENERAL))
+               export_errno = 1;
 
        va_start(args, fmt);
        xlog_backend(kind, fmt, args);
--- nfs-utils-1.2.8.orig/utils/exportfs/exportfs.c
+++ nfs-utils-1.2.8/utils/exportfs/exportfs.c
@@ -103,8 +103,6 @@ main(int argc, char **argv)
        xlog_stderr(1);
        xlog_syslog(0);
 
-       export_errno = 0;
-
        while ((c = getopt(argc, argv, "afhio:ruv")) != EOF) {
                switch(c) {
                case 'a':
++++++ exportfs-report-failure-if-asked-to-unexport-somethi.patch ++++++
>From 609bce0c7efde1875d1477d96fe1f359b6403005 Mon Sep 17 00:00:00 2001
From: Neil Brown <[email protected]>
Date: Mon, 28 Oct 2013 14:40:15 +1100
Subject: [PATCH] exportfs: report failure if asked to unexport something not
 exported.
Reference: bnc#846064

Currently if exportfs is asked to unexport something that is not
exported it silently succeeds.  This is not ideal, particularly for
scripting situations.

So report an error unless the unexport was successful.

Reported-by: Tony Asleson <[email protected]>
Signed-off-by: NeilBrown <[email protected]>
---
 utils/exportfs/exportfs.c |    4 ++++
 1 file changed, 4 insertions(+)

--- nfs-utils-1.2.8.orig/utils/exportfs/exportfs.c
+++ nfs-utils-1.2.8/utils/exportfs/exportfs.c
@@ -345,6 +345,7 @@ unexportfs(char *arg, int verbose)
        char            *path;
        char            *hname = arg;
        int             htype;
+       int             success = 0;
 
        if ((path = strchr(arg, ':')) != NULL)
                *path++ = '\0';
@@ -391,7 +392,10 @@ unexportfs(char *arg, int verbose)
 #endif
                exp->m_xtabent = 0;
                exp->m_mayexport = 0;
+               success = 1;
        }
+       if (!success)
+               xlog(L_ERROR, "Could not find %s to unexport.\n", arg);
 
        freeaddrinfo(ai);
 }

++++++ nfs.init ++++++
--- /var/tmp/diff_new_pack.aeq4u2/_old  2013-11-15 13:29:47.000000000 +0100
+++ /var/tmp/diff_new_pack.aeq4u2/_new  2013-11-15 13:29:47.000000000 +0100
@@ -31,6 +31,8 @@
 
 IDMAPD_CLIENT_STATE=/run/nfs/nfs-rpc.idmapd
 IDMAPD_SERVER_STATE=/run/nfs/nfsserver-rpc.idmapd
+GSSD_CLIENT_STATE=/run/nfs/nfs-rpc.gssd
+GSSD_SERVER_STATE=/run/nfs/nfsserver-rpc.gssd
 
 if [ -z "$RPC_PIPEFS_DIR" ]; then
     RPC_PIPEFS_DIR=/var/lib/nfs/rpc_pipefs
@@ -163,7 +165,7 @@
         /sbin/modprobe rpcsec_gss_$flavor
     done
     mount_rpc_pipefs
-    startproc $GSSD_BIN $ignore_dns $GSSD_OPTIONS
+    startproc $GSSD_BIN $ignore_dns $GSSD_OPTIONS -p $RPC_PIPEFS_DIR
     return $?
 }
 
@@ -175,7 +177,7 @@
     if checkproc $IDMAPD_BIN && test -f $IDMAPD_SERVER_STATE; then
         killproc -HUP $IDMAPD_BIN
     else
-        startproc $IDMAPD_BIN
+        startproc $IDMAPD_BIN -p $RPC_PIPEFS_DIR
        return $?
     fi
 }
@@ -220,6 +222,7 @@
                rc_status -v
                rc_exit
            }
+           echo $GSSD_BIN > $GSSD_CLIENT_STATE
        fi
 
        # start idmapd
@@ -291,9 +294,12 @@
            umount -alt nfs,nfs4
 
            # stop gssd
-           if checkproc $GSSD_BIN; then
-               echo -n " gssd"
-               killproc $GSSD_BIN
+           if test ! -f $GSSD_SERVER_STATE ; then
+               if checkproc $GSSD_BIN; then
+                   echo -n " gssd"
+                   killproc $GSSD_BIN
+               fi
+               rm -f  $GSSD_CLIENT_STATE
            fi
 
            # stop idmapd
@@ -314,7 +320,10 @@
                fi
            fi
 
-           umount_rpc_pipefs
+           # umount rpc_pipefs only if not needed by server
+           if [ ! -f $GSSD_SERVER_STATE -a ! -f $IDMAPD_SERVER_STATE ]; then
+               umount_rpc_pipefs
+           fi
 
            rc_status -v
        fi

++++++ nfsserver.init ++++++
--- /var/tmp/diff_new_pack.aeq4u2/_old  2013-11-15 13:29:47.000000000 +0100
+++ /var/tmp/diff_new_pack.aeq4u2/_new  2013-11-15 13:29:47.000000000 +0100
@@ -52,12 +52,15 @@
 
 # XXX: there should be separate init scripts for these really
 SVCGSSD_BIN=/usr/sbin/rpc.svcgssd
+GSSD_BIN=/usr/sbin/rpc.gssd
 IDMAPD_BIN=/usr/sbin/rpc.idmapd
 NFSD_BIN=/usr/sbin/rpc.nfsd
 
 IDMAPD_CLIENT_STATE=/run/nfs/nfs-rpc.idmapd
 IDMAPD_SERVER_STATE=/run/nfs/nfsserver-rpc.idmapd
 NFSD_BIND_MOUNTS=/run/nfs/bind.mounts
+GSSD_CLIENT_STATE=/run/nfs/nfs-rpc.gssd
+GSSD_SERVER_STATE=/run/nfs/nfsserver-rpc.gssd
 
 NEED_SVCGSSD=no
 NEED_IDMPAPD=no
@@ -152,13 +155,26 @@
     return $?
 }
 
+do_start_gssd() {
+    if ! checkproc $GSSD_BIN; then
+       case $NFS_GSSD_AVOID_DNS in
+           [Nn]*) ignore_dns=-D ;;
+           [Yy]*) ignore_dns=   ;;
+           *    ) ignore_dns=-D
+       esac
+       mount_rpc_pipefs
+       startproc $GSSD_BIN $ignore_dns $GSSD_OPTIONS -p $RPC_PIPEFS_DIR
+       return $?
+    fi
+}
+
 do_start_idmapd() {
     mount_rpc_pipefs
 
     if checkproc $IDMAPD_BIN && test -f $IDMAPD_CLIENT_STATE; then
         killproc -HUP $IDMAPD_BIN
     else
-        startproc $IDMAPD_BIN
+        startproc $IDMAPD_BIN -p $RPC_PIPEFS_DIR
        return $?
     fi
 }
@@ -196,13 +212,19 @@
       fi
 
       nfs4_bind_mounts
-      # svcgssd; idmapd
+      # svcgssd; gssd; idmapd
       if [ "$NEED_SVCGSSD" = yes ]; then
           echo -n " svcgssd"
           do_start_svcgssd || {
-             rc_status -v
+              rc_status -v
               rc_exit
           }
+          echo -n " gssd"
+          do_start_gssd || {
+              rc_status -v
+              rc_exit
+          }
+         echo $GSSD_BIN > $GSSD_SERVER_STATE
       fi
       if [ "$NEED_IDMAPD" = yes ]; then
           echo -n " idmapd"
@@ -277,6 +299,15 @@
               rc_status -v
               rc_exit
           }
+         # kill only if not needed by client anymore
+         if [ ! -f $GSSD_CLIENT_STATE ]; then
+             echo -n " gssd"
+             killproc $GSSD_BIN || {
+                 rc_status -v
+                 rc_exit
+             }
+         fi
+         rm -f $GSSD_SERVER_STATE
       fi
       # idmap
       if [ "$NEED_IDMAPD" = yes ]; then
@@ -287,11 +318,15 @@
          fi
          rm -f $IDMAPD_SERVER_STATE
       fi
+      # umount rpc_pipefs only if not needed by client
+      if [ ! -f $GSSD_CLIENT_STATE -a ! -f $IDMAPD_CLIENT_STATE ] ; then
+         umount_rpc_pipefs
+      fi
       # umount nfsd fs
       check_for_nfsdfs
       if [ "$HAVE_NFSDFS" = "yes" -a -f /proc/fs/nfsd/exports ] ; then
-       umount /proc/fs/nfsd
-       rc_status
+         umount /proc/fs/nfsd
+         rc_status
       fi
       nfs4_unbind_mounts
       #
@@ -337,6 +372,9 @@
            echo -n " svcgssd"
            checkproc $SVCGSSD_BIN
            rc_status -v
+           echo -n " gssd"
+           checkproc $GSSD_BIN
+           rc_status -v
        fi
        if [ "$NEED_IDMAPD" = yes ]; then
            echo -n " idmapd"

-- 
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to