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

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

 



On Jul 31, 2012, at 2:00 PM, J. Bruce Fields wrote:

> From: "J. Bruce Fields" <bfields@xxxxxxxxxx>
> 
> Use ppoll instead.
> 
> (This breaks compatibility with kernels before 2.6.16 and glibc before
> 2.4).

I think I prefer seeing this wrapped with some autoconf machinery to allow nfs-utils to continue to build on earlier systems.

> Signed-off-by: J. Bruce Fields <bfields@xxxxxxxxxx>
> ---
> utils/gssd/gssd_main_loop.c |   12 +++++-------
> 1 file changed, 5 insertions(+), 7 deletions(-)
> 
> diff --git a/utils/gssd/gssd_main_loop.c b/utils/gssd/gssd_main_loop.c
> index 142c8c5..2d20fa2 100644
> --- a/utils/gssd/gssd_main_loop.c
> +++ b/utils/gssd/gssd_main_loop.c
> @@ -186,13 +186,14 @@ gssd_run()
> 	struct sigaction	dn_act = {
> 		.sa_handler = dir_notify_handler
> 	};
> -	sigset_t		set;
> +	sigset_t		set, emptyset;
> 
> 	sigemptyset(&dn_act.sa_mask);
> 	sigaction(DNOTIFY_SIGNAL, &dn_act, NULL);
> 
> -	/* just in case the signal is blocked... */
> +	sigemptyset(&emptyset);
> 	sigemptyset(&set);
> +	/* just in case the signal is blocked... */
> 	sigaddset(&set, DNOTIFY_SIGNAL);
> 	sigprocmask(SIG_UNBLOCK, &set, NULL);
> 
> @@ -210,16 +211,13 @@ gssd_run()
> 				exit(1);
> 			}
> 		}
> -		/* race condition here: dir_changed could be set before we
> -		 * enter the poll, and we'd never notice if it weren't for the
> -		 * timeout. */
> -		ret = poll(pollarray, pollsize, POLL_MILLISECS);
> +		ret = ppoll(pollarray, pollsize, NULL, &emptyset);
> 		if (ret < 0) {
> 			if (errno != EINTR)
> 				printerr(0,
> 					 "WARNING: error return from poll\n");
> 		} else if (ret == 0) {
> -			/* timeout */
> +			printerr(0, "WARNING: unexpected timeout\n");
> 		} else { /* ret > 0 */
> 			scan_poll_results(ret);
> 		}
> -- 
> 1.7.9.5
> 
> --
> 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

--
Chuck Lever
chuck[dot]lever[at]oracle[dot]com



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