Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 19 Jul 2015 20:02:53 +0300
From:      Konstantin Belousov <kostikbel@gmail.com>
To:        Mark Murray <markm@FreeBSD.org>
Cc:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   Re: svn commit: r285692 - head/sys/dev/random
Message-ID:  <20150719170253.GO2404@kib.kiev.ua>
In-Reply-To: <201507191605.t6JG5V3o038572@repo.freebsd.org>
References:  <201507191605.t6JG5V3o038572@repo.freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help
On Sun, Jul 19, 2015 at 04:05:31PM +0000, Mark Murray wrote:
> Author: markm
> Date: Sun Jul 19 16:05:30 2015
> New Revision: 285692
> URL: https://svnweb.freebsd.org/changeset/base/285692
> 
> Log:
>   Fix the read blocking so that it is interruptable and slow down the rate of console warning spamming while blocked.
>   
>   Approved by:	so (/dev/random blanket)
> 
> Modified:
>   head/sys/dev/random/randomdev.c
> 
> Modified: head/sys/dev/random/randomdev.c
> ==============================================================================
> --- head/sys/dev/random/randomdev.c	Sun Jul 19 16:05:26 2015	(r285691)
> +++ head/sys/dev/random/randomdev.c	Sun Jul 19 16:05:30 2015	(r285692)
> @@ -163,22 +163,28 @@ int
>  read_random_uio(struct uio *uio, bool nonblock)
>  {
>  	uint8_t *random_buf;
> -	int error;
> +	int error, spamcount;
>  	ssize_t read_len, total_read, c;
>  
>  	random_buf = malloc(PAGE_SIZE, M_ENTROPY, M_WAITOK);
>  	random_alg_context.ra_pre_read();
> -	/* (Un)Blocking logic */
>  	error = 0;
> +	spamcount = 0;
> +	/* (Un)Blocking logic */
>  	while (!random_alg_context.ra_seeded()) {
>  		if (nonblock) {
>  			error = EWOULDBLOCK;
>  			break;
>  		}
> -		tsleep(&random_alg_context, 0, "randseed", hz/10);
>  		/* keep tapping away at the pre-read until we seed/unblock. */
>  		random_alg_context.ra_pre_read();
> -		printf("random: %s unblock wait\n", __func__);
> +		/* Only bother the console every 10 seconds or so */
> +		if (spamcount == 0)
> +			printf("random: %s unblock wait\n", __func__);
> +		spamcount = (spamcount + 1)%100;
Is ppsratecheck() not suitable for this due to use of > 1 sec period ?

> +		error = tsleep(&random_alg_context, PCATCH, "randseed", hz/10);
> +		if ((error == ERESTART | error == EINTR))
This is probably still valid, but I wonder if you mean || there.
Then you could also remove extra ().

> +			break;
>  	}
>  	if (error == 0) {
>  #if !defined(RANDOM_DUMMY)

All your commits are breaking all style(9) rules.  It would be nice to keep
the style at least for the files where you added random harvesting and which
are already mostly style compliant.  E.g., what about wrapping lines at
position somewhere between 72 and 80 ?



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20150719170253.GO2404>