svn commit: r348465 - stable/12/tools/regression/fsx
Alan Somers
asomers at FreeBSD.org
Fri May 31 16:23:52 UTC 2019
Author: asomers
Date: Fri May 31 16:23:51 2019
New Revision: 348465
URL: https://svnweb.freebsd.org/changeset/base/348465
Log:
MFC r346847:
fsx: seed more randomly with the -S0 option
When using -S0, seed the PRNG with the current time in nanoseconds, not
seconds, so consecutive runs don't accidentally use the same seed.
Also, rename some variables for clarity.
Reviewed by: ngie
Sponsored by: The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D20078
Modified:
stable/12/tools/regression/fsx/fsx.c
Directory Properties:
stable/12/ (props changed)
Modified: stable/12/tools/regression/fsx/fsx.c
==============================================================================
--- stable/12/tools/regression/fsx/fsx.c Fri May 31 16:23:13 2019 (r348464)
+++ stable/12/tools/regression/fsx/fsx.c Fri May 31 16:23:51 2019 (r348465)
@@ -48,6 +48,7 @@
# include <time.h>
# include <strings.h>
#endif
+#include <err.h>
#include <fcntl.h>
#include <sys/mman.h>
#ifndef MAP_FILE
@@ -274,16 +275,22 @@ logdump(void)
prt("\t***RRRR***");
break;
case OP_WRITE:
- prt("WRITE\t0x%x thru 0x%x\t(0x%x bytes)",
- lp->args[0], lp->args[0] + lp->args[1] - 1,
- lp->args[1]);
- if (lp->args[0] > lp->args[2])
- prt(" HOLE");
- else if (lp->args[0] + lp->args[1] > lp->args[2])
- prt(" EXTEND");
- if ((badoff >= lp->args[0] || badoff >=lp->args[2]) &&
- badoff < lp->args[0] + lp->args[1])
- prt("\t***WWWW");
+ {
+ int offset = lp->args[0];
+ int len = lp->args[1];
+ int oldlen = lp->args[2];
+
+ prt("WRITE\t0x%x thru 0x%x\t(0x%x bytes)",
+ offset, offset + len - 1,
+ len);
+ if (offset > oldlen)
+ prt(" HOLE");
+ else if (offset + len > oldlen)
+ prt(" EXTEND");
+ if ((badoff >= offset || badoff >=oldlen) &&
+ badoff < offset + len)
+ prt("\t***WWWW");
+ }
break;
case OP_TRUNCATE:
down = lp->args[0] < lp->args[1];
@@ -993,6 +1000,7 @@ main(int argc, char **argv)
char *endp;
char goodfile[1024];
char logfile[1024];
+ struct timespec now;
goodfile[0] = 0;
logfile[0] = 0;
@@ -1115,8 +1123,11 @@ main(int argc, char **argv)
break;
case 'S':
seed = getnum(optarg, &endp);
- if (seed == 0)
- seed = time(0) % 10000;
+ if (seed == 0) {
+ if (clock_gettime(CLOCK_REALTIME, &now) != 0)
+ err(1, "clock_gettime");
+ seed = now.tv_nsec % 10000;
+ }
if (!quiet)
fprintf(stdout, "Seed set to %d\n", seed);
if (seed < 0)
@@ -1206,7 +1217,7 @@ main(int argc, char **argv)
prterr(fname);
warn("main: error on write");
} else
- warn("main: short write, 0x%x bytes instead of 0x%x\n",
+ warn("main: short write, 0x%x bytes instead of 0x%lx\n",
(unsigned)written, maxfilelen);
exit(98);
}
More information about the svn-src-all
mailing list