filesetup: revert O_DIRECT for layout mess
authorJens Axboe <axboe@kernel.dk>
Tue, 5 Sep 2017 14:43:28 +0000 (08:43 -0600)
committerJens Axboe <axboe@kernel.dk>
Tue, 5 Sep 2017 14:43:28 +0000 (08:43 -0600)
This commit essentially reverts the following fives commits:

d33db728d ("fix regression by 8c43ba62('filesetup: align layout buffer')")
47534cda0 ("filesetup: add non O_DIRECT direct I/O support for initial layout setup")
6c3169f9c ("filesetup: add direct=1 failure warning to layout")
8c43ba625 ("filesetup: align layout buffer")
6e344dc34 ("filesetup: keep OS_O_DIRECT flag when pre-allocating file")

in reverse order, since we keep having issues with the basic idea of
using O_DIRECT for file layout or extensions, if the job file has
asked for O_DIRECT.

Signed-off-by: Jens Axboe <axboe@kernel.dk>
filesetup.c

index 5e8ea357deb82a308d1102f888d895171cfc9e3c..b51ab35ce08b59ccbff3d2d7f2da2692c69a85aa 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;
 }