Recent changes (gfio)

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

 



The following changes since commit 47f4463579ab92332ef995774d8578b0191da6e4:

  configure: show help for bad option (2013-01-24 10:34:14 -0700)

are available in the git repository at:
  git://git.kernel.dk/fio.git gfio

Bruce Cran (1):
      Fix Windows build by defining clock sources and adding include file.

Huadong Liu (1):
      Use RUSAGE_THREAD, if available

Jens Axboe (19):
      Add lib/getrusage.c
      configure: add that windows has RUSGE_THREAD
      Correct ifdef checks for posix and linux fallocate
      hash: make 64-bit type ULL
      NAN: use __builtin_nanf() if not available
      configure: fix more old FIO_HAVE_ checks
      options: add help to experimental_verify
      configure: solaris and windowsaio fixups
      configure: kill windows FIO_HAVE_FDATASYNC
      Drop EXTFLAG and lib references
      configure: auto-generate a config-host.h
      configure: add configure header to config-host.h
      Makefile: remove config-host.ld
      configure: HPUX warning for empty CC
      Fix getopt def check
      Always fsync if asked to
      configure: add --extra-cflags
      configure: enable --extra-cflags for Windows
      Merge branch 'master' into gfio

 Makefile                                |   82 ++----------------
 backend.c                               |    4 +-
 configure                               |  145 ++++++++++++++++++++-----------
 engines/guasi.c                         |    7 +--
 engines/rdma.c                          |    7 +--
 filesetup.c                             |   10 +-
 fio.h                                   |    4 +-
 hash.h                                  |    2 +-
 lib/getopt.h                            |    2 +-
 lib/getrusage.c                         |   14 +++
 lib/getrusage.h                         |    9 ++
 options.c                               |   15 ++--
 os/os-solaris.h                         |    1 -
 os/os-windows.h                         |    3 -
 os/os.h                                 |    2 +-
 os/windows/posix.c                      |   14 +++-
 os/windows/posix/include/sys/resource.h |    1 +
 parse.c                                 |    3 +
 stat.c                                  |    8 +--
 19 files changed, 167 insertions(+), 166 deletions(-)
 create mode 100644 lib/getrusage.c
 create mode 100644 lib/getrusage.h

---

Diff of recent changes:

diff --git a/Makefile b/Makefile
index 9d3465c..038eacf 100644
--- a/Makefile
+++ b/Makefile
@@ -1,6 +1,5 @@
 DEBUGFLAGS = -D_FORTIFY_SOURCE=2 -DFIO_INC_DEBUG
-CPPFLAGS= -D_GNU_SOURCE -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 \
-	$(DEBUGFLAGS)
+CPPFLAGS= -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 $(DEBUGFLAGS)
 OPTFLAGS= -O3 -g -ffast-math $(EXTFLAGS)
 CFLAGS	= -std=gnu99 -Wwrite-strings -Wall $(OPTFLAGS)
 LIBS	= -lm -lz $(EXTLIBS)
@@ -34,7 +33,7 @@ SOURCE := gettime.c ioengines.c init.c stat.c log.c time.c filesetup.c \
 		memalign.c server.c client.c iolog.c backend.c libfio.c flow.c \
 		cconv.c lib/prio_tree.c json.c lib/zipf.c lib/axmap.c \
 		lib/lfsr.c gettime-thread.c helpers.c lib/flist_sort.c \
-		lib/hweight.c
+		lib/hweight.c lib/getrusage.c
 
 ifdef CONFIG_64BIT_LLP64
   CFLAGS += -DBITS_PER_LONG=32
@@ -45,22 +44,13 @@ endif
 ifdef CONFIG_32BIT
   CFLAGS += -DBITS_PER_LONG=32
 endif
-ifdef CONFIG_BIG_ENDIAN
-  CFLAGS += -DCONFIG_BIG_ENDIAN
-endif
-ifdef CONFIG_LITTLE_ENDIAN
-  CFLAGS += -DCONFIG_LITTLE_ENDIAN
-endif
 ifdef CONFIG_LIBAIO
-  CFLAGS += -DCONFIG_LIBAIO
   SOURCE += engines/libaio.c
 endif
 ifdef CONFIG_RDMA
-  CFLAGS += -DCONFIG_RDMA
   SOURCE += engines/rdma.c
 endif
 ifdef CONFIG_POSIXAIO
-  CFLAGS += -DCONFIG_POSIXAIO
   SOURCE += engines/posixaio.c
 endif
 ifdef CONFIG_LINUX_FALLOCATE
@@ -70,83 +60,29 @@ ifdef CONFIG_LINUX_EXT4_MOVE_EXTENT
   SOURCE += engines/e4defrag.c
 endif
 ifdef CONFIG_LINUX_SPLICE
-  CFLAGS += -DCONFIG_LINUX_SPLICE
   SOURCE += engines/splice.c
 endif
 ifdef CONFIG_GUASI
-  CFLAGS += -DCONFIG_GUASI
   SOURCE += engines/guasi.c
 endif
 ifdef CONFIG_FUSION_AW
-  CFLAGS += -DCONFIG_FUSION_AW
   SOURCE += engines/fusion-aw.c
 endif
 ifdef CONFIG_SOLARISAIO
-  CFLAGS += -DCONFIG_SOLARISAIO
   SOURCE += engines/solarisaio.c
 endif
-
+ifdef CONFIG_WINDOWSAIO
+  SOURCE += engines/windowsaio.c
+endif
 ifndef CONFIG_STRSEP
-  CFLAGS += -DCONFIG_STRSEP
   SOURCE += lib/strsep.c
 endif
 ifndef CONFIG_GETOPT_LONG_ONLY
-  CFLAGS += -DCONFIG_GETOPT_LONG_ONLY
   SOURCE += lib/getopt_long.c
 endif
-
 ifndef CONFIG_INET_ATON
-  CFLAGS += -DCONFIG_INET_ATON
   SOURCE += lib/inet_aton.c
 endif
-ifdef CONFIG_CLOCK_GETTIME
-  CFLAGS += -DCONFIG_CLOCK_GETTIME
-endif
-ifdef CONFIG_POSIXAIO_FSYNC
-  CFLAGS += -DCONFIG_POSIXAIO_FSYNC
-endif
-ifdef CONFIG_FADVISE
-  CFLAGS += -DCONFIG_FADVISE
-endif
-ifdef CONFIG_CLOCK_MONOTONIC
-  CFLAGS += -DCONFIG_CLOCK_MONOTONIC
-endif
-ifdef CONFIG_CLOCK_MONOTONIC_PRECISE
-  CFLAGS += -DCONFIG_CLOCK_MONOTONIC_PRECISE
-endif
-ifdef CONFIG_GETTIMEOFDAY
-  CFLAGS += -DCONFIG_GETTIMEOFDAY
-endif
-ifdef CONFIG_SOCKLEN_T
-  CFLAGS += -DCONFIG_SOCKLEN_T
-endif
-ifdef CONFIG_SFAA
-  CFLAGS += -DCONFIG_SFAA
-endif
-ifdef CONFIG_FDATASYNC
-  CFLAGS += -DCONFIG_FDATASYNC
-endif
-ifdef CONFIG_3ARG_AFFINITY
-  CFLAGS += -DCONFIG_3ARG_AFFINITY
-endif
-ifdef CONFIG_2ARG_AFFINITY
-  CFLAGS += -DCONFIG_2ARG_AFFINITY
-endif
-ifdef CONFIG_SYNC_FILE_RANGE
-  CFLAGS += -DCONFIG_SYNC_FILE_RANGE
-endif
-ifdef CONFIG_LIBNUMA
-  CFLAGS += -DCONFIG_LIBNUMA
-endif
-ifdef CONFIG_TLS_THREAD
-  CFLAGS += -DCONFIG_TLS_THREAD
-endif
-ifdef CONFIG_POSIX_FALLOCATE
-  CFLAGS += -DCONFIG_POSIX_FALLOCATE
-endif
-ifdef CONFIG_LINUX_FALLOCATE
-  CFLAGS += -DCONFIG_LINUX_FALLOCATE
-endif
 
 ifeq ($(UNAME), Linux)
   SOURCE += diskutil.c fifo.c blktrace.c cgroup.c trim.c engines/sg.c \
@@ -186,7 +122,7 @@ ifeq ($(UNAME), Darwin)
 endif
 ifneq (,$(findstring CYGWIN,$(UNAME)))
   SOURCE := $(filter-out engines/mmap.c,$(SOURCE))
-  SOURCE += engines/windowsaio.c os/windows/posix.c
+  SOURCE += os/windows/posix.c
   LIBS	 += -lpthread -lpsapi -lws2_32
   CFLAGS += -DPSAPI_VERSION=1 -Ios/windows/posix/include -Wno-format
 endif
@@ -251,10 +187,10 @@ FIO-VERSION-FILE: FORCE
 CFLAGS += -DFIO_VERSION='"$(FIO_VERSION)"'
 
 .c.o: .depend FORCE
-	$(QUIET_CC)$(CC) -o $@ -c $(CFLAGS) $(CPPFLAGS) $<
+	$(QUIET_CC)$(CC) -o $@ $(CFLAGS) $(CPPFLAGS) -c $<
 
 init.o: FIO-VERSION-FILE
-	$(QUIET_CC)$(CC) -o init.o -c $(CFLAGS) $(CPPFLAGS) -c init.c
+	$(QUIET_CC)$(CC) -o init.o $(CFLAGS) $(CPPFLAGS) -c init.c
 
 gcompat.o: gcompat.c gcompat.h
 	$(QUIET_CC)$(CC) $(CFLAGS) $(GTK_CFLAGS) $(CPPFLAGS) -c gcompat.c
@@ -307,7 +243,7 @@ t/axmap: $(T_AXMAP_OBJS)
 $(PROGS): .depend
 
 clean: FORCE
-	-rm -f .depend $(GFIO_OBJS) $(OBJS) $(T_OBJS) $(PROGS) $(T_PROGS) core.* core gfio FIO-VERSION-FILE config-host.mak config-host.ld cscope.out
+	-rm -f .depend $(GFIO_OBJS) $(OBJS) $(T_OBJS) $(PROGS) $(T_PROGS) core.* core gfio FIO-VERSION-FILE config-host.mak cscope.out
 
 cscope:
 	@cscope -b -R
diff --git a/backend.c b/backend.c
index 48b00b6..9aa2a28 100644
--- a/backend.c
+++ b/backend.c
@@ -50,6 +50,7 @@
 #include "lib/rand.h"
 #include "memalign.h"
 #include "server.h"
+#include "lib/getrusage.h"
 
 static pthread_t disk_util_thread;
 static struct fio_mutex *disk_thread_mutex;
@@ -1220,8 +1221,7 @@ static void *thread_main(void *data)
 	fio_verify_init(td);
 
 	fio_gettime(&td->epoch, NULL);
-	getrusage(RUSAGE_SELF, &td->ru_start);
-
+	fio_getrusage(&td->ru_start);
 	clear_state = 0;
 	while (keep_running(td)) {
 		uint64_t verify_bytes;
diff --git a/configure b/configure
index af2c1d9..ff87acc 100755
--- a/configure
+++ b/configure
@@ -24,7 +24,14 @@ trap "rm -f $TMPC $TMPO $TMPE" EXIT INT QUIT TERM
 rm -rf config.log
 
 config_host_mak="config-host.mak"
-config_host_ld="config-host.ld"
+config_host_h="config-host.h"
+
+rm -rf $config_host_mak
+rm -rf $config_host_h
+
+# Default CFLAGS
+CFLAGS="-D_GNU_SOURCE"
+EXTFLAGS="-include config-host.h"
 
 # Print a helpful header at the top of config.log
 echo "# FIO configure log $(date)" >> config.log
@@ -33,6 +40,14 @@ printf " '%s'" "$0" "$@" >> config.log
 echo >> config.log
 echo "#" >> config.log
 
+# Print configure header at the top of $config_host_h
+echo "/*" > $config_host_h
+echo " * Automatically generated by configure - do not modify" >> $config_host_h
+printf " * Configured with:" >> $config_host_h
+printf " * '%s'" "$0" "$@" >> $config_host_h
+echo "" >> $config_host_h
+echo " */" >> $config_host_h
+
 do_cc() {
     # Run the compiler, capturing its output to the log.
     echo $cc "$@" >> config.log
@@ -97,15 +112,20 @@ EOF
   compile_object
 }
 
+output_sym() {
+  echo "$1=y" >> $config_host_mak
+  echo "#define $1" >> $config_host_h
+}
+
 targetos=""
 cpu=""
 
 cc="${CC-${cross_prefix}gcc}"
 
 # default options
-gfio="no"
 show_help="no"
 exit_val=0
+gfio="no"
 
 # parse options
 for opt do
@@ -114,6 +134,9 @@ for opt do
   --cc=*)
     CC="$optarg"
     ;;
+  --extra-cflags=*)
+  CFLAGS="$CFLAGS $optarg"
+  ;;
   --enable-gfio)
     gfio="yes"
     ;;
@@ -129,6 +152,7 @@ done
 
 if test "$show_help" = "yes" ; then
     echo "--cc=                  Specify compiler to use"
+  echo "--extra-cflags=        Specify extra CFLAGS to pass to compiler"
     echo "--enable-gfio          Enable building of gtk gfio"
     exit $exit_val
 fi
@@ -169,17 +193,23 @@ CYGWIN*)
   if test -z "$CC" ; then
     CC="x86_64-w64-mingw32-gcc"
   fi
-  echo "CC=$CC"                    >  $config_host_mak
-  echo "CONFIG_LITTLE_ENDIAN=y"    >> $config_host_mak
-  echo "CONFIG_64BIT_LLP64=y"      >> $config_host_mak
-  echo "CONFIG_CLOCK_GETTIME=y"    >> $config_host_mak
-  echo "CONFIG_CLOCK_MONOTONIC=y"  >> $config_host_mak
-  echo "CONFIG_GETTIMEOFDAY=y"     >> $config_host_mak
-  echo "CONFIG_FADVISE=y"          >> $config_host_mak
-  echo "CONFIG_SOCKLEN_T=y"        >> $config_host_mak
-  echo "CONFIG_POSIX_FALLOCATE=y"  >> $config_host_mak
-  echo "CONFIG_FADVISE=y"          >> $config_host_mak
-  echo "CONFIG_SFAA=y"             >> $config_host_mak
+  output_sym "CONFIG_LITTLE_ENDIAN"
+  output_sym "CONFIG_64BIT_LLP64"
+  output_sym "CONFIG_CLOCK_GETTIME"
+  output_sym "CONFIG_CLOCK_MONOTONIC"
+  output_sym "CONFIG_GETTIMEOFDAY"
+  output_sym "CONFIG_FADVISE"
+  output_sym "CONFIG_SOCKLEN_T"
+  output_sym "CONFIG_POSIX_FALLOCATE"
+  output_sym "CONFIG_FADVISE"
+  output_sym "CONFIG_SFAA"
+  output_sym "CONFIG_RUSAGE_THREAD"
+  output_sym "CONFIG_WINDOWSAIO"
+  output_sym "CONFIG_FDATASYNC"
+  output_sym "CONFIG_GETTIMEOFDAY"
+  output_sym "CONFIG_CLOCK_GETTIME"
+  echo "CC=$CC" >> $config_host_mak
+  echo "EXTFLAGS=$CFLAGS -include config-host.h -D_GNU_SOURCE" >> $config_host_mak
   exit 0
 esac
 
@@ -249,7 +279,7 @@ case "$cpu" in
   ;;
 esac
 
-if test -z $CC; then
+if test -z "$CC" ; then
   if test "$targetos" = "FreeBSD"; then
     if has clang; then
       CC=clang
@@ -499,7 +529,6 @@ echo "POSIX fallocate               $posix_fallocate"
 linux_2arg_affinity="no"
 linux_3arg_affinity="no"
 cat > $TMPC << EOF
-#define _GNU_SOURCE
 #include <sched.h>
 int main(int argc, char **argv)
 {
@@ -511,7 +540,6 @@ if compile_prog "" "" "sched_setaffinity(,,)"; then
   linux_3arg_affinity="yes"
 else
   cat > $TMPC << EOF
-#define _GNU_SOURCE
 #include <sched.h>
 int main(int argc, char **argv)
 {
@@ -620,7 +648,6 @@ sync_file_range="no"
 cat > $TMPC << EOF
 #include <stdio.h>
 #include <unistd.h>
-#define _GNU_SOURCE
 #include <fcntl.h>
 #include <linux/fs.h>
 int main(int argc, char **argv)
@@ -661,7 +688,6 @@ echo "EXT4 move extent              $ext4_me"
 # splice probe
 linux_splice="no"
 cat > $TMPC << EOF
-#define _GNU_SOURCE
 #include <stdio.h>
 #include <fcntl.h>
 int main(int argc, char **argv)
@@ -845,6 +871,23 @@ fi
 
 echo "gfio                          $gfio"
 
+# Check whether we have getrusage(RUSAGE_THREAD)
+rusage_thread="no"
+cat > $TMPC << EOF
+#include <sys/time.h>
+#include <sys/resource.h>
+int main(int argc, char **argv)
+{
+  struct rusage ru;
+  getrusage(RUSAGE_THREAD, &ru);
+  return 0;
+}
+EOF
+if compile_prog "" "" "RUSAGE_THREAD"; then
+  rusage_thread="yes"
+fi
+echo "RUSAGE_THREAD                 $rusage_thread"
+
 #############################################################################
 
 echo "# Automatically generated by configure - do not modify" > $config_host_mak
@@ -853,97 +896,100 @@ printf " '%s'" "$0" "$@" >> $config_host_mak
 echo >> $config_host_mak
 
 if test "$wordsize" = "64" ; then
-  echo "CONFIG_64BIT=y" >> $config_host_mak
+  output_sym "CONFIG_64BIT"
 elif test "$wordsize" = "32" ; then
-  echo "CONFIG_32BIT=y" >> $config_host_mak
+  output_sym "CONFIG_32BIT"
 else
   echo "Unknown wordsize!"
   exit 1
 fi
 if test "$bigendian" = "yes" ; then
-  echo "CONFIG_BIG_ENDIAN=y" >> $config_host_mak
+  output_sym "CONFIG_BIG_ENDIAN"
 else
-  echo "CONFIG_LITTLE_ENDIAN=y" >> $config_host_mak
+  output_sym "CONFIG_LITTLE_ENDIAN"
 fi
 if test "$libaio" = "yes" ; then
-  echo "CONFIG_LIBAIO=y" >> $config_host_mak
+  output_sym "CONFIG_LIBAIO"
 fi
 if test "$posix_aio" = "yes" ; then
-  echo "CONFIG_POSIXAIO=y" >> $config_host_mak
+  output_sym "CONFIG_POSIXAIO"
 fi
 if test "$posix_aio_fsync" = "yes" ; then
-  echo "CONFIG_POSIXAIO_FSYNC=y" >> $config_host_mak
+  output_sym "CONFIG_POSIXAIO_FSYNC"
 fi
 if test "$linux_fallocate" = "yes" ; then
-  echo "CONFIG_LINUX_FALLOCATE=y" >> $config_host_mak
+  output_sym "CONFIG_LINUX_FALLOCATE"
 fi
 if test "$posix_fallocate" = "yes" ; then
-  echo "CONFIG_POSIX_FALLOCATE=y" >> $config_host_mak
+  output_sym "CONFIG_POSIX_FALLOCATE"
 fi
 if test "$fdatasync" = "yes" ; then
-  echo "CONFIG_FDATASYNC=y" >> $config_host_mak
+  output_sym "CONFIG_FDATASYNC"
 fi
 if test "$sync_file_range" = "yes" ; then
-  echo "CONFIG_SYNC_FILE_RANGE=y" >> $config_host_mak
+  output_sym "CONFIG_SYNC_FILE_RANGE"
 fi
 if test "$sfaa" = "yes" ; then
-  echo "CONFIG_SFAA=y" >> $config_host_mak
+  output_sym "CONFIG_SFAA"
 fi
 if test "$libverbs" = "yes" -o "rdmacm" = "yes" ; then
-  echo "CONFIG_RDMA=y" >> $config_host_mak
+  output_sym "CONFIG_RDMA"
 fi
 if test "$clock_gettime" = "yes" ; then
-  echo "CONFIG_CLOCK_GETTIME=y" >> $config_host_mak
+  output_sym "CONFIG_CLOCK_GETTIME"
 fi
 if test "$clock_monotonic" = "yes" ; then
-  echo "CONFIG_CLOCK_MONOTONIC=y" >> $config_host_mak
+  output_sym "CONFIG_CLOCK_MONOTONIC"
 fi
 if test "$clock_monotonic_precise" = "yes" ; then
-  echo "CONFIG_CLOCK_MONOTONIC_PRECISE=y" >> $config_host_mak
+  output_sym "CONFIG_CLOCK_MONOTONIC_PRECISE"
 fi
 if test "$gettimeofday" = "yes" ; then
-  echo "CONFIG_GETTIMEOFDAY=y" >> $config_host_mak
+  output_sym "CONFIG_GETTIMEOFDAY"
 fi
 if test "$posix_fadvise" = "yes" ; then
-  echo "CONFIG_POSIX_FADVISE=y" >> $config_host_mak
+  output_sym "CONFIG_POSIX_FADVISE"
 fi
 if test "$linux_3arg_affinity" = "yes" ; then
-  echo "CONFIG_3ARG_AFFINITY=y" >> $config_host_mak
+  output_sym "CONFIG_3ARG_AFFINITY"
 elif test "$linux_2arg_affinity" = "yes" ; then
-  echo "CONFIG_2ARG_AFFINITY=y" >> $config_host_mak
+  output_sym "CONFIG_2ARG_AFFINITY"
 fi
 if test "$strsep" = "yes" ; then
-  echo "CONFIG_STRSEP=y" >> $config_host_mak
+  output_sym "CONFIG_STRSEP"
 fi
 if test "$getopt_long_only" = "yes" ; then
-  echo "CONFIG_GETOPT_LONG_ONLY=y" >> $config_host_mak
+  output_sym "CONFIG_GETOPT_LONG_ONLY"
 fi
 if test "$inet_aton" = "yes" ; then
-  echo "CONFIG_INET_ATON=y" >> $config_host_mak
+  output_sym "CONFIG_INET_ATON"
 fi
 if test "$socklen_t" = "yes" ; then
-  echo "CONFIG_SOCKLEN_T=y" >> $config_host_mak
+  output_sym "CONFIG_SOCKLEN_T"
 fi
 if test "$ext4_me" = "yes" ; then
-  echo "CONFIG_LINUX_EXT4_MOVE_EXTENT=y" >> $config_host_mak
+  output_sym "CONFIG_LINUX_EXT4_MOVE_EXTENT"
 fi
 if test "$linux_splice" = "yes" ; then
-  echo "CONFIG_LINUX_SPLICE=y" >> $config_host_mak
+  output_sym "CONFIG_LINUX_SPLICE"
 fi
 if test "$guasi" = "yes" ; then
-  echo "CONFIG_GUASI=y" >> $config_host_mak
+  output_sym "CONFIG_GUASI"
 fi
 if test "$fusion_aw" = "yes" ; then
-  echo "CONFIG_FUSION_AW=y" >> $config_host_mak
+  output_sym "CONFIG_FUSION_AW"
 fi
 if test "$libnuma" = "yes" ; then
-  echo "CONFIG_LIBNUMA=y" >> $config_host_mak
+  output_sym "CONFIG_LIBNUMA"
 fi
 if test "$solaris_aio" = "yes" ; then
-  echo "CONFIG_SOLARISAIO=y" >> $config_host_mak
+  output_sym "CONFIG_SOLARISAIO"
 fi
 if test "$tls_thread" = "yes" ; then
-  echo "CONFIG_TLS_THREAD=y" >> $config_host_mak
+  output_sym "CONFIG_TLS_THREAD"
+fi
+if test "$rusage_thread" = "yes" ; then
+  output_sym "CONFIG_RUSAGE_THREAD"
 fi
 if test "$gfio" = "yes" ; then
   echo "CONFIG_GFIO=y" >> $config_host_mak
@@ -952,3 +998,4 @@ fi
 echo "LIBS+=$LIBS" >> $config_host_mak
 echo "CFLAGS+=$CFLAGS" >> $config_host_mak
 echo "CC=$cc" >> $config_host_mak
+echo "EXTFLAGS=$EXTFLAGS $CFLAGS" >> $config_host_mak
diff --git a/engines/guasi.c b/engines/guasi.c
index 6faae8d..c9c7429 100644
--- a/engines/guasi.c
+++ b/engines/guasi.c
@@ -3,12 +3,7 @@
  *
  * IO engine using the GUASI library.
  *
- * This is currently disabled. To enable it, execute:
- *
- * $ export EXTFLAGS="-DFIO_HAVE_GUASI"
- * $ export EXTLIBS="-lguasi"
- *
- * before running make. You'll need the GUASI lib as well:
+ * Before running make. You'll need the GUASI lib as well:
  *
  * http://www.xmailserver.org/guasi-lib.html
  *
diff --git a/engines/rdma.c b/engines/rdma.c
index a847b54..e1fb380 100644
--- a/engines/rdma.c
+++ b/engines/rdma.c
@@ -5,12 +5,7 @@
  * Supports both RDMA memory semantics and channel semantics
  *   for the InfiniBand, RoCE and iWARP protocols.
  *
- * This I/O engine is disabled by default. To enable it, execute:
- *
- * $ export EXTFLAGS+=" -DFIO_HAVE_RDMA "
- * $ export EXTLIBS+=" -libverbs -lrdmacm "
- *
- * before running make. You will need the Linux RDMA software as well, either
+ * You will need the Linux RDMA software installed, either
  * from your Linux distributor or directly from openfabrics.org:
  *
  * http://www.openfabrics.org/downloads/OFED/
diff --git a/filesetup.c b/filesetup.c
index c2170aa..8262ed3 100644
--- a/filesetup.c
+++ b/filesetup.c
@@ -15,7 +15,7 @@
 #include "hash.h"
 #include "lib/axmap.h"
 
-#ifdef FIO_HAVE_LINUX_FALLOCATE
+#ifdef CONFIG_LINUX_FALLOCATE
 #include <linux/falloc.h>
 #endif
 
@@ -72,7 +72,7 @@ static int extend_file(struct thread_data *td, struct fio_file *f)
 		return 1;
 	}
 
-#ifdef FIO_HAVE_FALLOCATE
+#ifdef CONFIG_POSIX_FALLOCATE
 	if (!td->o.fill_device) {
 		switch (td->o.fallocate_mode) {
 		case FIO_FALLOCATE_NONE:
@@ -87,7 +87,7 @@ static int extend_file(struct thread_data *td, struct fio_file *f)
 						strerror(r));
 			}
 			break;
-#ifdef FIO_HAVE_LINUX_FALLOCATE
+#ifdef CONFIG_LINUX_FALLOCATE
 		case FIO_FALLOCATE_KEEP_SIZE:
 			dprint(FD_FILE,
 				"fallocate(FALLOC_FL_KEEP_SIZE) "
@@ -100,14 +100,14 @@ static int extend_file(struct thread_data *td, struct fio_file *f)
 				td_verror(td, errno, "fallocate");
 
 			break;
-#endif /* FIO_HAVE_LINUX_FALLOCATE */
+#endif /* CONFIG_LINUX_FALLOCATE */
 		default:
 			log_err("fio: unknown fallocate mode: %d\n",
 				td->o.fallocate_mode);
 			assert(0);
 		}
 	}
-#endif /* FIO_HAVE_FALLOCATE */
+#endif /* CONFIG_POSIX_FALLOCATE */
 
 	if (!new_layout)
 		goto done;
diff --git a/fio.h b/fio.h
index db08aff..f0babaf 100644
--- a/fio.h
+++ b/fio.h
@@ -42,7 +42,7 @@ struct thread_data;
 #include "stat.h"
 #include "flow.h"
 
-#ifdef FIO_HAVE_SOLARISAIO
+#ifdef CONFIG_SOLARISAIO
 #include <sys/asynch.h>
 #endif
 
@@ -411,8 +411,6 @@ static inline int should_fsync(struct thread_data *td)
 {
 	if (td->last_was_sync)
 		return 0;
-	if (td->o.odirect)
-		return 0;
 	if (td_write(td) || td_rw(td) || td->o.override_sync)
 		return 1;
 
diff --git a/hash.h b/hash.h
index 13600f4..02b0614 100644
--- a/hash.h
+++ b/hash.h
@@ -28,7 +28,7 @@
 #error Define GOLDEN_RATIO_PRIME for your wordsize.
 #endif
 
-#define GR_PRIME_64	0x9e37fffffffc0001UL
+#define GR_PRIME_64	0x9e37fffffffc0001ULL
 
 static inline unsigned long __hash_long(unsigned long val)
 {
diff --git a/lib/getopt.h b/lib/getopt.h
index 84272c0..bc8a268 100644
--- a/lib/getopt.h
+++ b/lib/getopt.h
@@ -1,4 +1,4 @@
-#ifndef CONFIG_GETOPT_LONG_ONLY
+#ifdef CONFIG_GETOPT_LONG_ONLY
 
 #include <getopt.h>
 
diff --git a/lib/getrusage.c b/lib/getrusage.c
new file mode 100644
index 0000000..96dcf6d
--- /dev/null
+++ b/lib/getrusage.c
@@ -0,0 +1,14 @@
+#include <errno.h>
+#include "getrusage.h"
+
+int fio_getrusage(struct rusage *ru)
+{
+#ifdef CONFIG_RUSAGE_THREAD
+	if (!getrusage(RUSAGE_THREAD, ru))
+		return 0;
+	if (errno != EINVAL)
+		return -1;
+	/* Fall through to RUSAGE_SELF */
+#endif
+	return getrusage(RUSAGE_SELF, ru);
+}
diff --git a/lib/getrusage.h b/lib/getrusage.h
new file mode 100644
index 0000000..49e6427
--- /dev/null
+++ b/lib/getrusage.h
@@ -0,0 +1,9 @@
+#ifndef FIO_GETRUSAGE_H
+#define FIO_GETRUSAGE_H
+
+#include <sys/time.h>
+#include <sys/resource.h>
+
+extern int fio_getrusage(struct rusage *ru);
+
+#endif
diff --git a/options.c b/options.c
index 1461640..9d49ff1 100644
--- a/options.c
+++ b/options.c
@@ -1300,12 +1300,12 @@ struct fio_option fio_options[FIO_MAX_OPTS] = {
 			    .help = "POSIX asynchronous IO",
 			  },
 #endif
-#ifdef FIO_HAVE_SOLARISAIO
+#ifdef CONFIG_SOLARISAIO
 			  { .ival = "solarisaio",
 			    .help = "Solaris native asynchronous IO",
 			  },
 #endif
-#ifdef FIO_HAVE_WINDOWSAIO
+#ifdef CONFIG_WINDOWSAIO
 			  { .ival = "windowsaio",
 			    .help = "Windows native asynchronous IO"
 			  },
@@ -1355,12 +1355,12 @@ struct fio_option fio_options[FIO_MAX_OPTS] = {
 			    .help = "Fusion-io atomic write engine",
 			  },
 #endif
-#ifdef FIO_HAVE_E4_ENG
+#ifdef CONFIG_LINUX_EXT4_MOVE_EXTENT
 			  { .ival = "e4defrag",
 			    .help = "ext4 defrag engine",
 			  },
 #endif
-#ifdef FIO_HAVE_FALLOC_ENG
+#ifdef CONFIG_LINUX_FALLOCATE
 			  { .ival = "falloc",
 			    .help = "fallocate() file based engine",
 			  },
@@ -1695,7 +1695,7 @@ struct fio_option fio_options[FIO_MAX_OPTS] = {
 		.parent = "nrfiles",
 		.hide	= 1,
 	},
-#ifdef FIO_HAVE_FALLOCATE
+#ifdef CONFIG_POSIX_FALLOCATE
 	{
 		.name	= "fallocate",
 		.lname	= "Fallocate",
@@ -1714,7 +1714,7 @@ struct fio_option fio_options[FIO_MAX_OPTS] = {
 			    .oval = FIO_FALLOCATE_POSIX,
 			    .help = "Use posix_fallocate()",
 			  },
-#ifdef FIO_HAVE_LINUX_FALLOCATE
+#ifdef CONFIG_LINUX_FALLOCATE
 			  { .ival = "keep",
 			    .oval = FIO_FALLOCATE_KEEP_SIZE,
 			    .help = "Use fallocate(..., FALLOC_FL_KEEP_SIZE, ...)",
@@ -1731,7 +1731,7 @@ struct fio_option fio_options[FIO_MAX_OPTS] = {
 			  },
 		},
 	},
-#endif	/* FIO_HAVE_FALLOCATE */
+#endif	/* CONFIG_POSIX_FALLOCATE */
 	{
 		.name	= "fadvise_hint",
 		.lname	= "Fadvise hint",
@@ -2193,6 +2193,7 @@ struct fio_option fio_options[FIO_MAX_OPTS] = {
 		.name	= "experimental_verify",
 		.off1	= td_var_offset(experimental_verify),
 		.type	= FIO_OPT_BOOL,
+		.help	= "Enable experimental verification",
 		.category = FIO_OPT_C_IO,
 		.group	= FIO_OPT_G_VERIFY,
 	},
diff --git a/os/os-solaris.h b/os/os-solaris.h
index de59f77..e661211 100644
--- a/os/os-solaris.h
+++ b/os/os-solaris.h
@@ -14,7 +14,6 @@
 
 #include "../file.h"
 
-#define FIO_HAVE_SOLARISAIO
 #define FIO_HAVE_CPU_AFFINITY
 #define FIO_HAVE_PSHARED_MUTEX
 #define FIO_HAVE_CHARDEV_SIZE
diff --git a/os/os-windows.h b/os/os-windows.h
index f68f654..ef71dd7 100644
--- a/os/os-windows.h
+++ b/os/os-windows.h
@@ -20,9 +20,6 @@
 #define FIO_HAVE_ODIRECT
 #define FIO_HAVE_CPU_AFFINITY
 #define FIO_HAVE_CHARDEV_SIZE
-#define FIO_HAVE_FDATASYNC
-#define FIO_HAVE_WINDOWSAIO
-#define FIO_HAVE_FALLOCATE
 #define FIO_HAVE_GETTID
 #define FIO_USE_GENERIC_RAND
 
diff --git a/os/os.h b/os/os.h
index 28bb631..1e924d3 100644
--- a/os/os.h
+++ b/os/os.h
@@ -58,7 +58,7 @@ typedef struct aiocb os_aiocb_t;
 #include <scsi/sg.h>
 #endif
 
-#ifdef CONFIG_STRSEP
+#ifndef CONFIG_STRSEP
 #include "../lib/strsep.h"
 #endif
 
diff --git a/os/windows/posix.c b/os/windows/posix.c
index 67e71c8..05fa5a9 100755
--- a/os/windows/posix.c
+++ b/os/windows/posix.c
@@ -547,11 +547,21 @@ int getrusage(int who, struct rusage *r_usage)
 	const uint64_t SECONDS_BETWEEN_1601_AND_1970 = 11644473600;
 	FILETIME cTime, eTime, kTime, uTime;
 	time_t time;
+	HANDLE h;
 
 	memset(r_usage, 0, sizeof(*r_usage));
 
-	HANDLE hProcess = GetCurrentProcess();
-	GetProcessTimes(hProcess, &cTime, &eTime, &kTime, &uTime);
+	if (who == RUSAGE_SELF) {
+		h = GetCurrentProcess();
+		GetProcessTimes(h, &cTime, &eTime, &kTime, &uTime);
+	} else if (who == RUSAGE_THREAD) {
+		h = GetCurrentThread();
+		GetThreadTimes(h, &cTime, &eTime, &kTime, &uTime);
+	} else {
+		log_err("fio: getrusage %d is not implemented\n", who);
+		return -1;
+	}
+
 	time = ((uint64_t)uTime.dwHighDateTime << 32) + uTime.dwLowDateTime;
 	/* Divide by 10,000,000 to get the number of seconds and move the epoch from
 	 * 1601 to 1970 */
diff --git a/os/windows/posix/include/sys/resource.h b/os/windows/posix/include/sys/resource.h
index 837d657..fd46b28 100644
--- a/os/windows/posix/include/sys/resource.h
+++ b/os/windows/posix/include/sys/resource.h
@@ -2,6 +2,7 @@
 #define SYS_RESOURCE_H
 
 #define RUSAGE_SELF	0
+#define RUSAGE_THREAD	1
 
 struct rusage
 {
diff --git a/parse.c b/parse.c
index f349744..a0b18e2 100644
--- a/parse.c
+++ b/parse.c
@@ -1094,6 +1094,9 @@ void option_init(struct fio_option *o)
 			o->maxval = UINT_MAX;
 	}
 	if (o->type == FIO_OPT_FLOAT_LIST) {
+#ifndef NAN
+#define NAN __builtin_nanf("")
+#endif
 		o->minfp = NAN;
 		o->maxfp = NAN;
 	}
diff --git a/stat.c b/stat.c
index 2e78242..7cf66f0 100644
--- a/stat.c
+++ b/stat.c
@@ -11,17 +11,13 @@
 #include "diskutil.h"
 #include "lib/ieee754.h"
 #include "json.h"
+#include "lib/getrusage.h"
 
 void update_rusage_stat(struct thread_data *td)
 {
 	struct thread_stat *ts = &td->ts;
 
-#ifdef RUSAGE_THREAD
-	getrusage(RUSAGE_THREAD, &td->ru_end);
-#else
-	getrusage(RUSAGE_SELF, &td->ru_end);
-#endif
-
+	fio_getrusage(&td->ru_end);
 	ts->usr_time += mtime_since(&td->ru_start.ru_utime,
 					&td->ru_end.ru_utime);
 	ts->sys_time += mtime_since(&td->ru_start.ru_stime,
--
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