projects
/
fio.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
backend: don't allocate memory buffers for non-data workloads
[fio.git]
/
filesetup.c
diff --git
a/filesetup.c
b/filesetup.c
index 3594a80faf3bfe8300e29fc7cc04f7c892e826f8..9679c88d28245f287d64f13092a72631f7121fca 100644
(file)
--- a/
filesetup.c
+++ b/
filesetup.c
@@
-435,7
+435,7
@@
int generic_close_file(struct thread_data fio_unused *td, struct fio_file *f)
return ret;
}
return ret;
}
-
static
int file_lookup_open(struct fio_file *f, int flags)
+int file_lookup_open(struct fio_file *f, int flags)
{
struct fio_file *__f;
int from_hash;
{
struct fio_file *__f;
int from_hash;
@@
-468,6
+468,11
@@
int generic_open_file(struct thread_data *td, struct fio_file *f)
dprint(FD_FILE, "fd open %s\n", f->file_name);
dprint(FD_FILE, "fd open %s\n", f->file_name);
+ if (td_trim(td) && f->filetype != FIO_TYPE_BD) {
+ log_err("fio: trim only applies to block device\n");
+ return 1;
+ }
+
if (!strcmp(f->file_name, "-")) {
if (td_rw(td)) {
log_err("fio: can't read/write to stdin/out\n");
if (!strcmp(f->file_name, "-")) {
if (td_rw(td)) {
log_err("fio: can't read/write to stdin/out\n");
@@
-482,14
+487,17
@@
int generic_open_file(struct thread_data *td, struct fio_file *f)
f_out = stderr;
}
f_out = stderr;
}
+ if (td_trim(td))
+ goto skip_flags;
if (td->o.odirect)
flags |= OS_O_DIRECT;
if (td->o.sync_io)
flags |= O_SYNC;
if (td->o.odirect)
flags |= OS_O_DIRECT;
if (td->o.sync_io)
flags |= O_SYNC;
- if (f->filetype != FIO_TYPE_FILE)
- flags |= FIO_O_NOATIME;
if (td->o.create_on_open)
flags |= O_CREAT;
if (td->o.create_on_open)
flags |= O_CREAT;
+skip_flags:
+ if (f->filetype != FIO_TYPE_FILE)
+ flags |= FIO_O_NOATIME;
open_again:
if (td_write(td)) {
open_again:
if (td_write(td)) {
@@
-503,7
+511,7
@@
open_again:
f->fd = dup(STDOUT_FILENO);
else
from_hash = file_lookup_open(f, flags);
f->fd = dup(STDOUT_FILENO);
else
from_hash = file_lookup_open(f, flags);
- } else {
+ } else
if (td_read(td))
{
if (f->filetype == FIO_TYPE_CHAR && !read_only)
flags |= O_RDWR;
else
if (f->filetype == FIO_TYPE_CHAR && !read_only)
flags |= O_RDWR;
else
@@
-513,6
+521,9
@@
open_again:
f->fd = dup(STDIN_FILENO);
else
from_hash = file_lookup_open(f, flags);
f->fd = dup(STDIN_FILENO);
else
from_hash = file_lookup_open(f, flags);
+ } else { //td trim
+ flags |= O_RDWR;
+ from_hash = file_lookup_open(f, flags);
}
if (f->fd == -1) {
}
if (f->fd == -1) {
@@
-755,8
+766,11
@@
int setup_files(struct thread_data *td)
if (f->io_size == -1ULL)
total_size = -1ULL;
if (f->io_size == -1ULL)
total_size = -1ULL;
- else
+ else {
+ if (td->o.size_percent)
+ f->io_size = (f->io_size * td->o.size_percent) / 100;
total_size += f->io_size;
total_size += f->io_size;
+ }
if (f->filetype == FIO_TYPE_FILE &&
(f->io_size + f->file_offset) > f->real_file_size &&
if (f->filetype == FIO_TYPE_FILE &&
(f->io_size + f->file_offset) > f->real_file_size &&
@@
-770,9
+784,6
@@
int setup_files(struct thread_data *td)
}
}
}
}
- if (td->o.size_percent)
- total_size = (total_size * td->o.size_percent) / 100;
-
if (!td->o.size || td->o.size > total_size)
td->o.size = total_size;
if (!td->o.size || td->o.size > total_size)
td->o.size = total_size;
@@
-781,7
+792,7
@@
int setup_files(struct thread_data *td)
*/
if (need_extend) {
temp_stall_ts = 1;
*/
if (need_extend) {
temp_stall_ts = 1;
- if (
!terse_output
)
+ if (
output_format == FIO_OUTPUT_NORMAL
)
log_info("%s: Laying out IO file(s) (%u file(s) /"
" %lluMB)\n", td->o.name, need_extend,
extend_size >> 20);
log_info("%s: Laying out IO file(s) (%u file(s) /"
" %lluMB)\n", td->o.name, need_extend,
extend_size >> 20);