From 323876fbe897cf5748d94826380d7d907ebbee17 Mon Sep 17 00:00:00 2001 From: Jens Axboe Date: Tue, 5 Sep 2017 08:43:28 -0600 Subject: [PATCH] filesetup: revert O_DIRECT for layout mess 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 --- filesetup.c | 25 ++++++------------------- 1 file changed, 6 insertions(+), 19 deletions(-) diff --git a/filesetup.c b/filesetup.c index 5e8ea357..b51ab35c 100644 --- a/filesetup.c +++ b/filesetup.c @@ -15,7 +15,6 @@ #include "os/os.h" #include "hash.h" #include "lib/axmap.h" -#include "lib/memalign.h" #ifdef CONFIG_LINUX_FALLOCATE #include @@ -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; } -- 2.25.1