Re: [PATCH] rpc.gssd: don't call poll() twice a second

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Mon, Jul 30, 2012 at 04:59:49PM -0400, J. Bruce Fields wrote:
> On Sun, Jul 29, 2012 at 07:09:30PM -0400, Steve Dickson wrote:
> > 
> > 
> > On 07/29/2012 01:48 PM, J. Bruce Fields wrote:
> > > On Fri, Jul 27, 2012 at 07:08:53PM -0400, Jim Rees wrote:
> > >> J. Bruce Fields wrote:
> > >>
> > >>   +	if (1 != write(pipefd[1], "!", 1))
> > >>   +		printerr(2, "weird; maybe an interrupt?");
> > >>
> > >> Use Yoda conditions must we?
> > > 
> > > Yeah, yeah.  How about:
> > > 
> > > 	 static void something_changed(void)
> > > 	 {
> > > 	-	if (1 != write(pipefd[1], "!", 1))
> > > 	-		printerr(2, "weird; maybe an interrupt?");
> > > 	+	if (write(pipefd[1], "!", 1) != 1)
> > > 	+		printerr(0, "%s writing to pipe", strerror(errno));
> > > 	 }
> > >  
> > > ?
> > Better... IMHO..  but what's going to mean when we see that in some log?
> 
> Beats me.

Looking at it a little more: actually, if gssd is slow to process these
events then in theory they could pile up, and we could eventually get
EAGAIN/WOUDBLOCK.

Which wouldn't be a problem, except that now we're modifying errno in a
signal handler.  So the signal handler should be saving and restoring
errno.

And also: I noticed one of the reasons gssd hasn't been completely
reliable for me is that we already have a printerr() in the signal
handler, and printerr() doesn't appear to be reentrant.

Eh, I'm leaning toward just using ppoll.  According to the man page that
requires kernel >= 2.6.16, glibc >= 2.4.  Is that OK?

--b.
--
To unsubscribe from this list: send the line "unsubscribe linux-nfs" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Filesystem Development]     [Linux USB Development]     [Linux Media Development]     [Video for Linux]     [Linux NILFS]     [Linux Audio Users]     [Yosemite Info]     [Linux SCSI]

  Powered by Linux