X-Git-Url: https://git.kernel.dk/?a=blobdiff_plain;f=filesetup.c;h=789f0ed29ea501be4c5e3c3ee895093b305b5787;hb=b47b45887dcd4c9bd7d0391a393809ef892a34ff;hp=c4240d2a8c9bb457ee2c92c9d5a3375a27885795;hpb=63463983ce10e9678c5ad309608630eea873b4df;p=fio.git diff --git a/filesetup.c b/filesetup.c index c4240d2a..789f0ed2 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 @@ -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,17 +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; - b = fio_memalign(page_size, bs); + b = malloc(bs); if (!b) { - td_verror(td, errno, "fio_memalign"); + td_verror(td, errno, "malloc"); goto err; } @@ -259,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, bs); + free(b); done: return 0; err: close(f->fd); f->fd = -1; if (b) - fio_memfree(b, bs); + free(b); return 1; } @@ -1600,7 +1588,8 @@ int add_file(struct thread_data *td, const char *fname, int numjob, int inc) if (f->filetype == FIO_TYPE_FILE) td->nr_normal_files++; - set_already_allocated(file_name); + if (td->o.numjobs > 1) + set_already_allocated(file_name); if (inc) td->o.nr_files++; @@ -1880,6 +1869,7 @@ int fio_set_directio(struct thread_data *td, struct fio_file *f) return 0; #else + log_err("fio: direct IO is not supported on this host operating system\n"); return -1; #endif }