svn commit: r285692 - head/sys/dev/random

2015-07-19 Thread Mark Murray
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;
+   error = tsleep(random_alg_context, PCATCH, randseed, hz/10);
+   if ((error == ERESTART | error == EINTR))
+   break;
}
if (error == 0) {
 #if !defined(RANDOM_DUMMY)
___
svn-src-head@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to svn-src-head-unsubscr...@freebsd.org


Re: svn commit: r285692 - head/sys/dev/random

2015-07-19 Thread Konstantin Belousov
On Sun, Jul 19, 2015 at 04:05:31PM +, 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 ?
___
svn-src-head@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to svn-src-head-unsubscr...@freebsd.org


Re: svn commit: r285692 - head/sys/dev/random

2015-07-19 Thread Mark R V Murray

 On 19 Jul 2015, at 18:02, Konstantin Belousov kostik...@gmail.com wrote:
 
 -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 ?

Oooh! Very probably, thank you.

 +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 ().

Oh, nuts. Got the wrong patch. Thank you.

 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 ?

I’ll look, thanks!

M
-- 
Mark R V Murray

___
svn-src-head@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to svn-src-head-unsubscr...@freebsd.org