Merge branch 'windows_io_hint' of https://github.com/sitsofe/fio
authorJens Axboe <axboe@kernel.dk>
Tue, 5 Sep 2017 21:37:36 +0000 (15:37 -0600)
committerJens Axboe <axboe@kernel.dk>
Tue, 5 Sep 2017 21:37:36 +0000 (15:37 -0600)
.travis.yml
engines/glusterfs.c
engines/glusterfs_async.c
filesetup.c

index 795c0fc..94f69fb 100644 (file)
@@ -5,12 +5,16 @@ compiler:
   - clang
   - gcc
 env:
+  matrix:
+    - BUILD_ARCH="x86"
+    - BUILD_ARCH="x86_64"
   global:
     - MAKEFLAGS="-j 2"
 matrix:
   include:
     - os: osx
       compiler: clang # Workaround travis setting CC=["clang", "gcc"]
+      env: BUILD_ARCH="x86_64"
     # Build using the 10.12 SDK but target and run on OSX 10.11
 #   - os: osx
 #     compiler: clang
@@ -19,12 +23,29 @@ matrix:
     # Build on the latest OSX version (will eventually become obsolete)
     - os: osx
       compiler: clang
-      osx_image: xcode8.2
+      osx_image: xcode8.3
+      env: BUILD_ARCH="x86_64"
   exclude:
     - os: osx
       compiler: gcc
+  exclude:
+    - os: linux
+      compiler: clang
+      env: BUILD_ARCH="x86" # Only do the gcc x86 build to reduce clutter
 before_install:
-  - if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then sudo apt-get -qq update; fi
-  - if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then sudo apt-get install -qq -y libaio-dev libnuma-dev libz-dev librbd-dev glusterfs-common libibverbs-dev librdmacm-dev; fi
+  - EXTRA_CFLAGS="-Werror"
+  - if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then
+        pkgs=(libaio-dev libnuma-dev libz-dev librbd-dev libibverbs-dev librdmacm-dev);
+        if [[ "$BUILD_ARCH" == "x86" ]]; then
+            pkgs=("${pkgs[@]/%/:i386}");
+            pkgs+=(gcc-multilib);
+            EXTRA_CFLAGS="${EXTRA_CFLAGS} -m32";
+        else
+            pkgs+=(glusterfs-common);
+        fi;
+        sudo apt-get -qq update;
+        sudo apt-get install --no-install-recommends -qq -y "${pkgs[@]}";
+    fi
 script:
-  - ./configure --extra-cflags="-Werror" && make && make test
+  - ./configure --extra-cflags="${EXTRA_CFLAGS}" && make
+  - make test
index 2abc283..981dfa3 100644 (file)
@@ -165,11 +165,11 @@ int fio_gf_open_file(struct thread_data *td, struct fio_file *f)
        if (td_read(td)) {
                if (glfs_lstat(g->fs, f->file_name, &sb)
                    || sb.st_size < f->real_file_size) {
-                       dprint(FD_FILE, "fio extend file %s from %ld to %ld\n",
-                              f->file_name, sb.st_size, f->real_file_size);
+                       dprint(FD_FILE, "fio extend file %s from %jd to %" PRIu64 "\n",
+                              f->file_name, (intmax_t) sb.st_size, f->real_file_size);
                        ret = glfs_ftruncate(g->fd, f->real_file_size);
                        if (ret) {
-                               log_err("failed fio extend file %s to %ld\n",
+                               log_err("failed fio extend file %s to %" PRIu64 "\n",
                                        f->file_name, f->real_file_size);
                        } else {
                                unsigned long long left;
@@ -190,7 +190,7 @@ int fio_gf_open_file(struct thread_data *td, struct fio_file *f)
 
                                        r = glfs_write(g->fd, b, bs, 0);
                                        dprint(FD_IO,
-                                              "fio write %d of %ld file %s\n",
+                                              "fio write %d of %" PRIu64 " file %s\n",
                                               r, f->real_file_size,
                                               f->file_name);
 
index f46cb26..97271d6 100644 (file)
@@ -92,7 +92,7 @@ static void gf_async_cb(glfs_fd_t * fd, ssize_t ret, void *data)
        struct io_u *io_u = data;
        struct fio_gf_iou *iou = io_u->engine_data;
 
-       dprint(FD_IO, "%s ret %lu\n", __FUNCTION__, ret);
+       dprint(FD_IO, "%s ret %zd\n", __FUNCTION__, ret);
        iou->io_complete = 1;
 }
 
index 5e8ea35..b51ab35 100644 (file)
@@ -15,7 +15,6 @@
 #include "os/os.h"
 #include "hash.h"
 #include "lib/axmap.h"
-#include "lib/memalign.h"
 
 #ifdef CONFIG_LINUX_FALLOCATE
 #include <linux/falloc.h>
@@ -110,7 +109,7 @@ static int extend_file(struct thread_data *td, struct fio_file *f)
 {
        int new_layout = 0, unlink_file = 0, flags;
        unsigned long long left;
-       unsigned int bs, alloc_size = 0;
+       unsigned int bs;
        char *b = NULL;
 
        if (read_only) {
@@ -147,8 +146,6 @@ static int extend_file(struct thread_data *td, struct fio_file *f)
                flags |= O_CREAT;
        if (new_layout)
                flags |= O_TRUNC;
-       if (td->o.odirect)
-               flags |= OS_O_DIRECT;
 
 #ifdef WIN32
        flags |= _O_BINARY;
@@ -162,14 +159,8 @@ static int extend_file(struct thread_data *td, struct fio_file *f)
                if (err == ENOENT && !td->o.allow_create)
                        log_err("fio: file creation disallowed by "
                                        "allow_file_create=0\n");
-               else {
-                       if (err == EINVAL && (flags & OS_O_DIRECT))
-                               log_err("fio: looks like your filesystem "
-                                       "does not support "
-                                       "direct=1/buffered=0\n");
-
+               else
                        td_verror(td, err, "open");
-               }
                return 1;
        }
 
@@ -196,18 +187,14 @@ static int extend_file(struct thread_data *td, struct fio_file *f)
                }
        }
 
-       if (td->o.odirect && !OS_O_DIRECT && fio_set_directio(td, f))
-               goto err;
-
        left = f->real_file_size;
        bs = td->o.max_bs[DDIR_WRITE];
        if (bs > left)
                bs = left;
 
-       alloc_size = bs;
-       b = fio_memalign(page_size, alloc_size);
+       b = malloc(bs);
        if (!b) {
-               td_verror(td, errno, "fio_memalign");
+               td_verror(td, errno, "malloc");
                goto err;
        }
 
@@ -260,14 +247,14 @@ static int extend_file(struct thread_data *td, struct fio_file *f)
                        f->io_size = f->real_file_size;
        }
 
-       fio_memfree(b, alloc_size);
+       free(b);
 done:
        return 0;
 err:
        close(f->fd);
        f->fd = -1;
        if (b)
-               fio_memfree(b, alloc_size);
+               free(b);
        return 1;
 }