Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 16 May 2019 03:24:08 +0000 (UTC)
From:      Alan Somers <asomers@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-11@freebsd.org
Subject:   svn commit: r347643 - stable/11/tools/regression/fsx
Message-ID:  <201905160324.x4G3O8Eu055055@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: asomers
Date: Thu May 16 03:24:08 2019
New Revision: 347643
URL: https://svnweb.freebsd.org/changeset/base/347643

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/11/tools/regression/fsx/fsx.c
Directory Properties:
  stable/11/   (props changed)

Modified: stable/11/tools/regression/fsx/fsx.c
==============================================================================
--- stable/11/tools/regression/fsx/fsx.c	Thu May 16 02:41:25 2019	(r347642)
+++ stable/11/tools/regression/fsx/fsx.c	Thu May 16 03:24:08 2019	(r347643)
@@ -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);
 		}



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