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

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

 




On 07/30/2012 06:10 PM, J. Bruce Fields wrote:
> 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?
I would think so.... 

steved.

--
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