From a7b913941a8fab263d448e124cb8ffecc6cb2299f491c501f3eb48b021cd8d44 Mon Sep 17 00:00:00 2001 From: OBS User unknown Date: Thu, 20 Nov 2008 14:56:51 +0000 Subject: [PATCH] OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/nfs-utils?expand=0&rev=40 --- nfs-utils.changes | 22 +++++++++++++++ nfs-utils.spec | 21 +++++++++++++-- rpc.gssd-catch-signal.patch | 39 +++++++++++++++++++++++++++ sm-notify-no-sync.patch | 53 +++++++++++++++++++++++++++++++++++++ 4 files changed, 133 insertions(+), 2 deletions(-) create mode 100644 rpc.gssd-catch-signal.patch create mode 100644 sm-notify-no-sync.patch diff --git a/nfs-utils.changes b/nfs-utils.changes index 22be1a8..071c04d 100644 --- a/nfs-utils.changes +++ b/nfs-utils.changes @@ -1,3 +1,25 @@ +------------------------------------------------------------------- +Thu Nov 20 03:10:20 CET 2008 - nfbrown@suse.de + +- rpc.gssd-catch-signal.patch + * new patch (not yet upstream) to make sure + rpc.gssd gets signals from dnotify. + bnc#406832 + +------------------------------------------------------------------- +Wed Nov 19 23:42:23 CET 2008 - nfbrown@suse.de + +- sm-notify-no-sync.patch + * new upstream patch to avoid sync() in common + case of no peers to notify. + Important for speeding boot of SLED + +------------------------------------------------------------------- +Tue Nov 18 21:43:59 CET 2008 - nfbrown@suse.de + +- nfs-utils.spec: typo in command to install + modprobe.d/nfs-utils + ------------------------------------------------------------------- Fri Nov 14 03:19:34 CET 2008 - nfbrown@suse.de diff --git a/nfs-utils.spec b/nfs-utils.spec index 2d09a5f..1960b82 100644 --- a/nfs-utils.spec +++ b/nfs-utils.spec @@ -27,7 +27,7 @@ BuildRequires: libevent Url: http://nfs.sourceforge.net Summary: Support Utilities for Kernel nfsd Version: 1.1.3 -Release: 10 +Release: 11 Group: Productivity/Networking/NFS License: GPL v2 or later BuildRoot: %{_tmppath}/%{name}-%{version}-build @@ -49,6 +49,8 @@ Source11: modprobe.nfs-utils Patch0: nfs-utils-1.0.7-bind-syntax.patch Patch1: nfs-utils-1.1.2-try-before-mount.patch Patch2: nfs-utils-1.1.2-connect-UDP.patch +Patch3: sm-notify-no-sync.patch +Patch4: rpc.gssd-catch-signal.patch %description This package contains the NFS utilities. You can tune the number of @@ -128,6 +130,8 @@ Authors: %patch0 -p1 %patch1 -p1 %patch2 -p1 +%patch3 -p1 +%patch4 -p1 cp %{S:6} . %build @@ -179,7 +183,7 @@ install -d $RPM_BUILD_ROOT/lib/mkinitrd/scripts install -m 755 %{S:9} $RPM_BUILD_ROOT/lib/mkinitrd/scripts/setup-nfs.sh install -m 755 %{S:10} $RPM_BUILD_ROOT/lib/mkinitrd/scripts/boot-nfs.sh install -d $RPM_BUILD_ROOT/etc/modprobe.d -install -m 644 ${S:11} $RPM_BUILD_ROOT/etc/modprobe.d/nfs-utils +install -m 644 %{S:11} $RPM_BUILD_ROOT/etc/modprobe.d/nfs-utils %clean rm -rf $RPM_BUILD_ROOT @@ -286,6 +290,19 @@ rm -rf $RPM_BUILD_ROOT %doc nfs/*.html nfs/*.ps linux-nfs/* README.NFSv4 %changelog +* Thu Nov 20 2008 nfbrown@suse.de +- rpc.gssd-catch-signal.patch + * new patch (not yet upstream) to make sure + rpc.gssd gets signals from dnotify. + bnc#406832 +* Wed Nov 19 2008 nfbrown@suse.de +- sm-notify-no-sync.patch + * new upstream patch to avoid sync() in common + case of no peers to notify. + Important for speeding boot of SLED +* Tue Nov 18 2008 nfbrown@suse.de +- nfs-utils.spec: typo in command to install + modprobe.d/nfs-utils * Fri Nov 14 2008 nfbrown@suse.de - nfsserver.init * don't set version if nfsd already running. diff --git a/rpc.gssd-catch-signal.patch b/rpc.gssd-catch-signal.patch new file mode 100644 index 0000000..a692b74 --- /dev/null +++ b/rpc.gssd-catch-signal.patch @@ -0,0 +1,39 @@ +Make sure signal used by 'dnotify' is not blocked. + +Some desktop environments block all realtime signals +and they remain blocked for all child processes. +So if you run rpc.gssd from a terminal window, the +signal it used for dnotify is blocked and never +deliverred. So it doesn't work. + +So we unblock that signal. + +bnc#406832 + +Signed-off-by: NeilBrown + + +Index: nfs-utils-1.1.3/utils/gssd/gssd_main_loop.c +=================================================================== +--- nfs-utils-1.1.3.orig/utils/gssd/gssd_main_loop.c ++++ nfs-utils-1.1.3/utils/gssd/gssd_main_loop.c +@@ -99,6 +99,7 @@ gssd_run() + int ret; + struct sigaction dn_act; + int fd; ++ sigset_t set; + + /* Taken from linux/Documentation/dnotify.txt: */ + dn_act.sa_sigaction = dir_notify_handler; +@@ -106,6 +107,11 @@ gssd_run() + dn_act.sa_flags = SA_SIGINFO; + sigaction(DNOTIFY_SIGNAL, &dn_act, NULL); + ++ /* just in case the signal is blocked... */ ++ sigemptyset(&set); ++ sigaddset(&set, DNOTIFY_SIGNAL); ++ sigprocmask(SIG_UNBLOCK, &set, NULL); ++ + if ((fd = open(pipefs_nfsdir, O_RDONLY)) == -1) { + printerr(0, "ERROR: failed to open %s: %s\n", + pipefs_nfsdir, strerror(errno)); diff --git a/sm-notify-no-sync.patch b/sm-notify-no-sync.patch new file mode 100644 index 0000000..b0fd335 --- /dev/null +++ b/sm-notify-no-sync.patch @@ -0,0 +1,53 @@ +From c8d18e26d2a53d9036a32c2dafebccaf4ce1634d Mon Sep 17 00:00:00 2001 +From: Phil Endecott +Date: Tue, 14 Oct 2008 14:36:58 -0400 +Subject: [PATCH] sm-notify should exit as soon as its determined + there are no hosts to notify. This also decreases + start up time by a few seconds. + +Signed-off-by: Steve Dickson +--- + utils/statd/sm-notify.c | 13 ++++++++++--- + 1 files changed, 10 insertions(+), 3 deletions(-) + +Index: nfs-utils-1.1.3/utils/statd/sm-notify.c +=================================================================== +--- nfs-utils-1.1.3.orig/utils/statd/sm-notify.c ++++ nfs-utils-1.1.3/utils/statd/sm-notify.c +@@ -152,9 +152,13 @@ usage: fprintf(stderr, + return 1; + } + ++ log_syslog = 1; ++ openlog("sm-notify", LOG_PID, LOG_DAEMON); ++ + if (strcmp(_SM_BASE_PATH, BASEDIR) == 0) { + if (record_pid() == 0 && force == 0 && opt_update_state == 1) + /* already run, don't try again */ ++ nsm_log(LOG_NOTICE, "Already notifying clients; Exiting!"); + exit(0); + } + +@@ -169,6 +173,12 @@ usage: fprintf(stderr, + backup_hosts(_SM_DIR_PATH, _SM_BAK_PATH); + get_hosts(_SM_BAK_PATH); + ++ /* If there are not hosts to notify, just exit */ ++ if (!hosts) { ++ nsm_log(LOG_DEBUG, "No hosts to notify; exiting"); ++ return 0; ++ } ++ + /* Get and update the NSM state. This will call sync() */ + nsm_state = nsm_get_state(opt_update_state); + set_kernel_nsm_state(nsm_state); +@@ -177,9 +187,6 @@ usage: fprintf(stderr, + if (!opt_quiet) + printf("Backgrounding to notify hosts...\n"); + +- openlog("sm-notify", LOG_PID, LOG_DAEMON); +- log_syslog = 1; +- + if (daemon(0, 0) < 0) { + nsm_log(LOG_WARNING, "unable to background: %s", + strerror(errno));