All of lore.kernel.org
 help / color / mirror / Atom feed
From: "J. Bruce Fields" <bfields@fieldses.org>
To: Neil Brown <neilb@suse.de>
Cc: kwc@citi.umich.edu, linux-nfs@vger.kernel.org
Subject: Re: [PATCH] gssd:  unblock DNOTIFY_SIGNAL in case it was blocked.
Date: Tue, 11 Nov 2008 14:09:40 -0500	[thread overview]
Message-ID: <20081111190940.GA8775@fieldses.org> (raw)
In-Reply-To: <18712.46537.9006.490726-wvvUuzkyo1EYVZTmpyfIwg@public.gmane.org>

On Tue, Nov 11, 2008 at 09:29:29AM +1100, Neil Brown wrote:
> 
> I have a situation where rpc.gssd appears to not be working.
> Mount attempts which need to communicate with it block.
> 
> I've narrowed down the problem to that fact that all realtime signals
> have been blocked.  This means that DNOTIFY_SIGNAL (which is a
> realtime signal) is never delivered, so gssd never rescans the
> rpc_pipe/nfs directory.
> 
> I haven't figured out why the signals are blocked yet, but having
> rpc.gssd fail mysteriously in that situation isn't pleasant.
> 
> So I wonder what people think of the following patch.  It simply
> unblocks the signal.  Alternately we can check if it is blocked and
> warn - I'm not really sure of the significance of blocking all these
> signals.  Maybe it's wrong to just unblock them.

So we don't know what it is that's doing the blocking?

> As an aside, maybe we could change gssd_run to use "ppoll" rather than
> "poll".  Then it would not have to wake up every 500msec to see if it
> missed a signal. We would probably have to check kernel version was at
> least 2.6.16....

Yes. (What does glibc itself do in the ppoll library call if the kernel
doesn't support it?)

--b.

> diff --git a/utils/gssd/gssd_main_loop.c b/utils/gssd/gssd_main_loop.c
> index 84f04e9..b9f3a06 100644
> --- a/utils/gssd/gssd_main_loop.c
> +++ b/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));
> --
> 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

  parent reply	other threads:[~2008-11-11 19:09 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-11-10 22:29 [PATCH] gssd: unblock DNOTIFY_SIGNAL in case it was blocked Neil Brown
     [not found] ` <18712.46537.9006.490726-wvvUuzkyo1EYVZTmpyfIwg@public.gmane.org>
2008-11-11  4:13   ` Kevin Coffman
2008-11-11 19:09   ` J. Bruce Fields [this message]
2008-11-11 22:20     ` NeilBrown
     [not found]       ` <ced7f54f33cb02088b6d9c10603c047e.squirrel-eq65iwfR9nKIECXXMXunQA@public.gmane.org>
2008-11-13  4:37         ` J. Bruce Fields
2008-11-25 15:00           ` Steve Dickson
2008-12-01 19:29   ` Steve Dickson

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20081111190940.GA8775@fieldses.org \
    --to=bfields@fieldses.org \
    --cc=kwc@citi.umich.edu \
    --cc=linux-nfs@vger.kernel.org \
    --cc=neilb@suse.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.