svn commit: r260726 - stable/9/tools/regression/fsx

Andriy Gapon avg at FreeBSD.org
Thu Jan 16 14:15:04 UTC 2014


Author: avg
Date: Thu Jan 16 14:15:04 2014
New Revision: 260726
URL: http://svnweb.freebsd.org/changeset/base/260726

Log:
  MFC r258351: fsx: new option to disable msync(MS_SYNC) after each write

Modified:
  stable/9/tools/regression/fsx/fsx.c
Directory Properties:
  stable/9/tools/regression/fsx/   (props changed)

Modified: stable/9/tools/regression/fsx/fsx.c
==============================================================================
--- stable/9/tools/regression/fsx/fsx.c	Thu Jan 16 14:14:49 2014	(r260725)
+++ stable/9/tools/regression/fsx/fsx.c	Thu Jan 16 14:15:04 2014	(r260726)
@@ -126,6 +126,7 @@ int	randomoplen = 1;		/* -O flag disable
 int	seed = 1;			/* -S flag */
 int     mapped_writes = 1;	      /* -W flag disables */
 int 	mapped_reads = 1;		/* -R flag disables it */
+int     mapped_msync = 1;	      /* -U flag disables */
 int	fsxgoodfd = 0;
 FILE *	fsxlogf = NULL;
 int badoff = -1;
@@ -679,12 +680,12 @@ domapwrite(unsigned offset, unsigned siz
 
 	if ((p = (char *)mmap(0, map_size, PROT_READ | PROT_WRITE,
 			      MAP_FILE | MAP_SHARED, fd,
-			      (off_t)(offset - pg_offset))) == (char *)-1) {
+			      (off_t)(offset - pg_offset))) == MAP_FAILED) {
 		prterr("domapwrite: mmap");
 		report_failure(202);
 	}
 	memcpy(p + pg_offset, good_buf + offset, size);
-	if (msync(p, map_size, 0) != 0) {
+	if (mapped_msync && msync(p, map_size, MS_SYNC) != 0) {
 		prterr("domapwrite: msync");
 		report_failure(203);
 	}
@@ -886,6 +887,7 @@ usage(void)
 	-S seed: for random # generator (default 1) 0 gets timestamp\n\
 	-W: mapped write operations DISabled\n\
 	-R: mapped read operations DISabled)\n\
+	-U: msync after mapped write operations DISabled\n\
 	fname: this filename is REQUIRED (no default)\n");
 	exit(90);
 }
@@ -941,8 +943,8 @@ main(int argc, char **argv)
 
 	setvbuf(stdout, (char *)0, _IOLBF, 0); /* line buffered stdout */
 
-	while ((ch = getopt(argc, argv, "b:c:dl:m:no:p:qr:s:t:w:D:LN:OP:RS:W"))
-	       != -1)
+	while ((ch = getopt(argc, argv,
+	    "b:c:dl:m:no:p:qr:s:t:w:D:LN:OP:RS:UW")) != -1)
 		switch (ch) {
 		case 'b':
 			simulatedopcount = getnum(optarg, &endp);
@@ -1057,6 +1059,11 @@ main(int argc, char **argv)
 			if (!quiet)
 				fprintf(stdout, "mapped writes DISABLED\n");
 			break;
+		case 'U':
+			mapped_msync = 0;
+			if (!quiet)
+				fprintf(stdout, "mapped msync DISABLED\n");
+			break;
 
 		default:
 			usage();


More information about the svn-src-all mailing list