Force ztest to always use /dev/urandom
For ztest, which is solely for testing, using a pseudo random is entirely reasonable. Using /dev/urandom ensures the system entropy pool doesn't get depleted thus stalling the testing. This is a particular problem when testing in VMs. Reviewed-by: Tim Chase <tim@chase2k.com> Reviewed by: Thomas Caputi <tcaputi@datto.com> Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov> Closes #7017 Closes #7036
This commit is contained in:
parent
6df9f8ebd7
commit
e1a0850c35
|
@ -7064,7 +7064,12 @@ main(int argc, char **argv)
|
||||||
exit(EXIT_FAILURE);
|
exit(EXIT_FAILURE);
|
||||||
}
|
}
|
||||||
|
|
||||||
ztest_fd_rand = open("/dev/urandom", O_RDONLY);
|
/*
|
||||||
|
* Force random_get_bytes() to use /dev/urandom in order to prevent
|
||||||
|
* ztest from needlessly depleting the system entropy pool.
|
||||||
|
*/
|
||||||
|
random_path = "/dev/urandom";
|
||||||
|
ztest_fd_rand = open(random_path, O_RDONLY);
|
||||||
ASSERT3S(ztest_fd_rand, >=, 0);
|
ASSERT3S(ztest_fd_rand, >=, 0);
|
||||||
|
|
||||||
if (!fd_data_str) {
|
if (!fd_data_str) {
|
||||||
|
|
|
@ -630,6 +630,8 @@ extern void delay(clock_t ticks);
|
||||||
#define NN_NUMBUF_SZ (6)
|
#define NN_NUMBUF_SZ (6)
|
||||||
|
|
||||||
extern uint64_t physmem;
|
extern uint64_t physmem;
|
||||||
|
extern char *random_path;
|
||||||
|
extern char *urandom_path;
|
||||||
|
|
||||||
extern int highbit64(uint64_t i);
|
extern int highbit64(uint64_t i);
|
||||||
extern int lowbit64(uint64_t i);
|
extern int lowbit64(uint64_t i);
|
||||||
|
|
|
@ -907,13 +907,15 @@ lowbit64(uint64_t i)
|
||||||
return (__builtin_ffsll(i));
|
return (__builtin_ffsll(i));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
char *random_path = "/dev/random";
|
||||||
|
char *urandom_path = "/dev/urandom";
|
||||||
static int random_fd = -1, urandom_fd = -1;
|
static int random_fd = -1, urandom_fd = -1;
|
||||||
|
|
||||||
void
|
void
|
||||||
random_init(void)
|
random_init(void)
|
||||||
{
|
{
|
||||||
VERIFY((random_fd = open("/dev/random", O_RDONLY)) != -1);
|
VERIFY((random_fd = open(random_path, O_RDONLY)) != -1);
|
||||||
VERIFY((urandom_fd = open("/dev/urandom", O_RDONLY)) != -1);
|
VERIFY((urandom_fd = open(urandom_path, O_RDONLY)) != -1);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
|
|
@ -189,7 +189,6 @@ Requires: fio
|
||||||
Requires: acl
|
Requires: acl
|
||||||
Requires: sudo
|
Requires: sudo
|
||||||
Requires: sysstat
|
Requires: sysstat
|
||||||
Requires: rng-tools
|
|
||||||
AutoReqProv: no
|
AutoReqProv: no
|
||||||
|
|
||||||
%description test
|
%description test
|
||||||
|
|
|
@ -148,15 +148,6 @@ function store_core
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
rngdpid=""
|
|
||||||
function on_exit
|
|
||||||
{
|
|
||||||
if [ -n "$rngdpid" ]; then
|
|
||||||
kill -9 "$rngdpid"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
trap on_exit EXIT
|
|
||||||
|
|
||||||
# parse arguments
|
# parse arguments
|
||||||
# expected format: zloop [-t timeout] [-c coredir] [-- extra ztest args]
|
# expected format: zloop [-t timeout] [-c coredir] [-- extra ztest args]
|
||||||
coredir=$DEFAULTCOREDIR
|
coredir=$DEFAULTCOREDIR
|
||||||
|
@ -205,9 +196,6 @@ or_die rm -f ztest.history
|
||||||
or_die rm -f ztest.ddt
|
or_die rm -f ztest.ddt
|
||||||
or_die rm -f ztest.cores
|
or_die rm -f ztest.cores
|
||||||
|
|
||||||
# start rngd in the background so we don't run out of entropy
|
|
||||||
or_die read -r rngdpid < <(rngd -f -r /dev/urandom & echo $!)
|
|
||||||
|
|
||||||
ztrc=0 # ztest return value
|
ztrc=0 # ztest return value
|
||||||
foundcrashes=0 # number of crashes found so far
|
foundcrashes=0 # number of crashes found so far
|
||||||
starttime=$(date +%s)
|
starttime=$(date +%s)
|
||||||
|
|
Loading…
Reference in New Issue