Recent changes (master)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



The following changes since commit dac45f23c3c7d146f7df82047ae7f25abf231ed3:

  stat: fixup fio-dump-status file location (2014-03-12 13:40:09 -0600)

are available in the git repository at:

  git://git.kernel.dk/fio.git master

for you to fetch changes up to 7750aac43ee4e0c001860426e6fdaf22d9ddfc76:

  Update documentation on zero_buffers / scramble_buffers (2014-03-14 19:41:07 -0600)

----------------------------------------------------------------
Jens Axboe (4):
      Disable status file updates on error
      Bump length of description field to 256 chars
      Don't scramble buffers if compression is enabled
      Update documentation on zero_buffers / scramble_buffers

 HOWTO    |    2 ++
 fio.1    |    2 ++
 init.c   |   13 ++++++++++++-
 server.c |    6 +++---
 server.h |    2 +-
 stat.c   |   18 ++++++++++++++----
 stat.h   |    3 ++-
 7 files changed, 36 insertions(+), 10 deletions(-)

---

Diff of recent changes:

diff --git a/HOWTO b/HOWTO
index 725214f..0f9c0fc 100644
--- a/HOWTO
+++ b/HOWTO
@@ -519,6 +519,8 @@ bs_is_seq_rand	If this option is set, fio will use the normal read,write
 
 zero_buffers	If this option is given, fio will init the IO buffers to
 		all zeroes. The default is to fill them with random data.
+		The resulting IO buffers will not be completely zeroed,
+		unless scramble_buffers is also turned off.
 
 refill_buffers	If this option is given, fio will refill the IO buffers
 		on every submit. The default is to only fill it at init
diff --git a/fio.1 b/fio.1
index 2dee56b..20f0c09 100644
--- a/fio.1
+++ b/fio.1
@@ -430,6 +430,8 @@ blocksize setting.
 .TP
 .B zero_buffers
 Initialise buffers with all zeros. Default: fill buffers with random data.
+The resulting IO buffers will not be completely zeroed, unless
+\fPscramble_buffers\fR is also turned off.
 .TP
 .B refill_buffers
 If this option is given, fio will refill the IO buffers on every submit. The
diff --git a/init.c b/init.c
index 73ec9eb..0a872c0 100644
--- a/init.c
+++ b/init.c
@@ -856,6 +856,11 @@ int ioengine_load(struct thread_data *td)
 	return 0;
 }
 
+static int compression_enabled(struct thread_options *o)
+{
+	return o->compress_percentage || o->compress_chunk;
+}
+
 static void init_flags(struct thread_data *td)
 {
 	struct thread_options *o = &td->o;
@@ -868,8 +873,14 @@ static void init_flags(struct thread_data *td)
 		td->flags |= TD_F_READ_IOLOG;
 	if (o->refill_buffers)
 		td->flags |= TD_F_REFILL_BUFFERS;
-	if (o->scramble_buffers)
+
+	/*
+	 * Don't scramble buffers if we set any of the compression
+	 * settings
+	 */
+	if (o->scramble_buffers && !compression_enabled(o))
 		td->flags |= TD_F_SCRAMBLE_BUFFERS;
+
 	if (o->verify != VERIFY_NONE)
 		td->flags |= TD_F_VER_NONE;
 }
diff --git a/server.c b/server.c
index dc70616..2f12162 100644
--- a/server.c
+++ b/server.c
@@ -987,9 +987,9 @@ void fio_server_send_ts(struct thread_stat *ts, struct group_run_stats *rs)
 
 	memset(&p, 0, sizeof(p));
 
-	strcpy(p.ts.name, ts->name);
-	strcpy(p.ts.verror, ts->verror);
-	strcpy(p.ts.description, ts->description);
+	strncpy(p.ts.name, ts->name, FIO_JOBNAME_SIZE - 1);
+	strncpy(p.ts.verror, ts->verror, FIO_VERROR_SIZE - 1);
+	strncpy(p.ts.description, ts->description, FIO_JOBDESC_SIZE - 1);
 
 	p.ts.error		= cpu_to_le32(ts->error);
 	p.ts.thread_number	= cpu_to_le32(ts->thread_number);
diff --git a/server.h b/server.h
index 8f79c14..3a279f0 100644
--- a/server.h
+++ b/server.h
@@ -38,7 +38,7 @@ struct fio_net_cmd_reply {
 };
 
 enum {
-	FIO_SERVER_VER			= 32,
+	FIO_SERVER_VER			= 33,
 
 	FIO_SERVER_MAX_FRAGMENT_PDU	= 1024,
 
diff --git a/stat.c b/stat.c
index f018f33..f84ce53 100644
--- a/stat.c
+++ b/stat.c
@@ -1232,12 +1232,12 @@ static void __show_run_stats(void)
 			/*
 			 * These are per-group shared already
 			 */
-			strncpy(ts->name, td->o.name, FIO_JOBNAME_SIZE);
+			strncpy(ts->name, td->o.name, FIO_JOBNAME_SIZE - 1);
 			if (td->o.description)
 				strncpy(ts->description, td->o.description,
-						FIO_JOBNAME_SIZE);
+						FIO_JOBDESC_SIZE - 1);
 			else
-				memset(ts->description, 0, FIO_JOBNAME_SIZE);
+				memset(ts->description, 0, FIO_JOBDESC_SIZE);
 
 			/*
 			 * If multiple entries in this group, this is
@@ -1479,6 +1479,7 @@ void show_running_run_stats(void)
 
 static int status_interval_init;
 static struct timeval status_time;
+static int status_file_disabled;
 
 #define FIO_STATUS_FILE		"fio-dump-status"
 
@@ -1488,6 +1489,9 @@ static int check_status_file(void)
 	const char *temp_dir;
 	char fio_status_file_path[PATH_MAX];
 
+	if (status_file_disabled)
+		return 0;
+
 	temp_dir = getenv("TMPDIR");
 	if (temp_dir == NULL)
 		temp_dir = getenv("TEMP");
@@ -1499,7 +1503,13 @@ static int check_status_file(void)
 	if (stat(fio_status_file_path, &sb))
 		return 0;
 
-	unlink(fio_status_file_path);
+	if (unlink(fio_status_file_path) < 0) {
+		log_err("fio: failed to unlink %s: %s\n", fio_status_file_path,
+							strerror(errno));
+		log_err("fio: disabling status file updates\n");
+		status_file_disabled = 1;
+	}
+
 	return 1;
 }
 
diff --git a/stat.h b/stat.h
index bc4f6da..3f68305 100644
--- a/stat.h
+++ b/stat.h
@@ -114,6 +114,7 @@ struct group_run_stats {
 
 #define MAX_PATTERN_SIZE	512
 #define FIO_JOBNAME_SIZE	128
+#define FIO_JOBDESC_SIZE	256
 #define FIO_VERROR_SIZE		128
 
 struct thread_stat {
@@ -123,7 +124,7 @@ struct thread_stat {
 	uint32_t thread_number;
 	uint32_t groupid;
 	uint32_t pid;
-	char description[FIO_JOBNAME_SIZE];
+	char description[FIO_JOBDESC_SIZE];
 	uint32_t members;
 	uint32_t unified_rw_rep;
 
--
To unsubscribe from this list: send the line "unsubscribe fio" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Linux Kernel]     [Linux SCSI]     [Linux IDE]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux SCSI]

  Powered by Linux