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