40 lines
1.2 KiB
Diff
40 lines
1.2 KiB
Diff
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 <neilb@suse.de>
|
|
|
|
|
|
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));
|