From: Jens Axboe Date: Wed, 4 Mar 2009 11:53:13 +0000 (+0100) Subject: Add create_on_open option X-Git-Tag: fio-1.25~20 X-Git-Url: https://git.kernel.dk/?p=fio.git;a=commitdiff_plain;h=814452bd47e0f2bb4825b8042b664f32de0aff8d Add create_on_open option Signed-off-by: Jens Axboe Please enter the commit message for your changes. Lines starting --- diff --git a/HOWTO b/HOWTO index b8a7dd74..2cfe3695 100644 --- a/HOWTO +++ b/HOWTO @@ -693,6 +693,9 @@ create_serialize=bool If true, serialize the file creating for the jobs. create_fsync=bool fsync the data file after creation. This is the default. +create_on_open=bool Don't pre-setup the files for IO, just create open() + when it's time to do IO to that file. + unlink=bool Unlink the job files when done. Not the default, as repeated runs of that job would then waste time recreating the file set again and again. diff --git a/filesetup.c b/filesetup.c index cfcfa9ae..088b77c3 100644 --- a/filesetup.c +++ b/filesetup.c @@ -314,6 +314,8 @@ int generic_open_file(struct thread_data *td, struct fio_file *f) flags |= O_SYNC; if (f->filetype != FIO_TYPE_FILE) flags |= FIO_O_NOATIME; + if (td->o.create_on_open) + flags |= O_CREAT; open_again: if (td_write(td)) { @@ -534,8 +536,11 @@ int setup_files(struct thread_data *td) if (f->filetype == FIO_TYPE_FILE && (f->io_size + f->file_offset) > f->real_file_size && !(td->io_ops->flags & FIO_DISKLESSIO)) { - need_extend++; - extend_size += (f->io_size + f->file_offset); + if (!td->o.create_on_open) { + need_extend++; + extend_size += (f->io_size + f->file_offset); + } else + f->real_file_size = f->io_size + f->file_offset; f->flags |= FIO_FILE_EXTEND; } } diff --git a/fio.h b/fio.h index 11338eb7..dd09ceec 100644 --- a/fio.h +++ b/fio.h @@ -443,6 +443,7 @@ struct thread_options { unsigned int invalidate_cache; unsigned int create_serialize; unsigned int create_fsync; + unsigned int create_on_open; unsigned int end_fsync; unsigned int sync_io; unsigned int verify; diff --git a/options.c b/options.c index cec7bb79..73815bb0 100644 --- a/options.c +++ b/options.c @@ -1289,6 +1289,13 @@ static struct fio_option options[] = { .help = "Fsync file after creation", .def = "1", }, + { + .name = "create_on_open", + .type = FIO_OPT_BOOL, + .off1 = td_var_offset(create_on_open), + .help = "Create files when they are opened for IO", + .def = "0", + }, { .name = "cpuload", .type = FIO_OPT_INT,