Recent changes (master)

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

 



The following changes since commit 0f9940ad60550da5198e2d1e63e11803f5aef914:

  BSD Yacc doesn't understand --no-lines, so use -l instead (2014-10-15 14:16:35 -0600)

are available in the git repository at:

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

for you to fetch changes up to 24ffb6f85058a95d4647541283c94c9e27520f1b:

  Add alignment to thread_options_pack for proper fp alignment (2014-10-20 10:56:46 -0600)

----------------------------------------------------------------
Jens Axboe (4):
      Add some build assert macros
      stat: ensure that the fp fields are 64-bit aligned
      fio: add alignment check for fp fields
      Add alignment to thread_options_pack for proper fp alignment

 compiler/compiler.h |   22 ++++++++++++++++++++++
 libfio.c            |   12 ++++++++++++
 server.h            |    2 +-
 stat.h              |    1 +
 thread_options.h    |    1 +
 5 files changed, 37 insertions(+), 1 deletion(-)

---

Diff of recent changes:

diff --git a/compiler/compiler.h b/compiler/compiler.h
index e1afcb4..40e857c 100644
--- a/compiler/compiler.h
+++ b/compiler/compiler.h
@@ -33,4 +33,26 @@
 	1; \
 })
 
+#ifndef __compiletime_error
+#define __compiletime_error(message)
+#endif
+#ifndef __compiletime_error_fallback
+#define __compiletime_error_fallback(condition)	do { } while (0)
+#endif
+
+#define __compiletime_assert(condition, msg, prefix, suffix)		\
+	do {								\
+		int __cond = !(condition);				\
+		extern void prefix ## suffix(void) __compiletime_error(msg); \
+		if (__cond)						\
+			prefix ## suffix();				\
+		__compiletime_error_fallback(__cond);			\
+	} while (0)
+
+#define _compiletime_assert(condition, msg, prefix, suffix) \
+	__compiletime_assert(condition, msg, prefix, suffix)
+
+#define compiletime_assert(condition, msg) \
+	_compiletime_assert(condition, msg, __compiletime_assert_, __LINE__)
+
 #endif
diff --git a/libfio.c b/libfio.c
index 5a996f9..523cc36 100644
--- a/libfio.c
+++ b/libfio.c
@@ -297,6 +297,18 @@ int initialize_fio(char *envp[])
 {
 	long ps;
 
+	/*
+	 * We need these to be properly 64-bit aligned, otherwise we
+	 * can run into problems on archs that fault on unaligned fp
+	 * access (ARM).
+	 */
+	compiletime_assert((offsetof(struct thread_stat, percentile_list) % 8) == 0, "stat percentile_list");
+	compiletime_assert((offsetof(struct thread_stat, latency_percentile) % 8) == 0, "stat latency_percentile");
+	compiletime_assert((offsetof(struct thread_options_pack, zipf_theta) % 8) == 0, "zipf_theta");
+	compiletime_assert((offsetof(struct thread_options_pack, pareto_h) % 8) == 0, "pareto_h");
+	compiletime_assert((offsetof(struct thread_options_pack, percentile_list) % 8) == 0, "percentile_list");
+	compiletime_assert((offsetof(struct thread_options_pack, percentile_list) % 8) == 0, "latency_percentile");
+
 	if (endian_check()) {
 		log_err("fio: endianness settings appear wrong.\n");
 		log_err("fio: please report this to fio@xxxxxxxxxxxxxxx\n");
diff --git a/server.h b/server.h
index 67ba38d..46d05a6 100644
--- a/server.h
+++ b/server.h
@@ -38,7 +38,7 @@ struct fio_net_cmd_reply {
 };
 
 enum {
-	FIO_SERVER_VER			= 37,
+	FIO_SERVER_VER			= 38,
 
 	FIO_SERVER_MAX_FRAGMENT_PDU	= 1024,
 	FIO_SERVER_MAX_CMD_MB		= 2048,
diff --git a/stat.h b/stat.h
index 1727c0c..d834cff 100644
--- a/stat.h
+++ b/stat.h
@@ -180,6 +180,7 @@ struct thread_stat {
 
 	uint32_t latency_depth;
 	uint64_t latency_target;
+	uint16_t pad;
 	fio_fp64_t latency_percentile;
 	uint64_t latency_window;
 } __attribute__((packed));
diff --git a/thread_options.h b/thread_options.h
index a45d7b7..5c9910a 100644
--- a/thread_options.h
+++ b/thread_options.h
@@ -349,6 +349,7 @@ struct thread_options_pack {
 	uint32_t bs_is_seq_rand;
 
 	uint32_t random_distribution;
+	uint32_t pad;
 	fio_fp64_t zipf_theta;
 	fio_fp64_t pareto_h;
 
--
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