X-Git-Url: https://git.kernel.dk/?a=blobdiff_plain;f=engines%2Ffilecreate.c;h=39a2950293f70b8e74e57624dfea5e1fb050d3c6;hb=c3e028cacfc9a3f463d572fc3a7a52fc1fe37bef;hp=01f7d68f4073e0fe41131fd5652e5604b5161b21;hpb=132b1ee42e63a5ca369d94d33d2a7337741d7458;p=fio.git diff --git a/engines/filecreate.c b/engines/filecreate.c index 01f7d68f..39a29502 100644 --- a/engines/filecreate.c +++ b/engines/filecreate.c @@ -5,16 +5,18 @@ * of the file creation. */ #include -#include #include #include #include "../fio.h" -#include "../filehash.h" + +struct fc_data { + enum fio_ddir stat_ddir; +}; static int open_file(struct thread_data *td, struct fio_file *f) { - struct timespec start, end; + struct timespec start; int do_lat = !td->o.disable_lat; dprint(FD_FILE, "fd open %s\n", f->file_name); @@ -43,17 +45,18 @@ static int open_file(struct thread_data *td, struct fio_file *f) } if (do_lat) { - unsigned long long nsec; + struct fc_data *data = td->io_ops_data; + uint64_t nsec; - fio_gettime(&end, NULL); - nsec = ntime_since(&start, &end); - add_lat_sample(td, DDIR_WRITE, nsec, 0, 0); + nsec = ntime_since_now(&start); + add_clat_sample(td, data->stat_ddir, nsec, 0, 0); } return 0; } -static int queue_io(struct thread_data *td, struct io_u fio_unused *io_u) +static enum fio_q_status queue_io(struct thread_data *td, + struct io_u fio_unused *io_u) { return FIO_Q_COMPLETED; } @@ -69,15 +72,39 @@ static int get_file_size(struct thread_data *td, struct fio_file *f) return 0; } +static int init(struct thread_data *td) +{ + struct fc_data *data; + + data = calloc(1, sizeof(*data)); + + if (td_read(td)) + data->stat_ddir = DDIR_READ; + else if (td_write(td)) + data->stat_ddir = DDIR_WRITE; + + td->io_ops_data = data; + return 0; +} + +static void cleanup(struct thread_data *td) +{ + struct fc_data *data = td->io_ops_data; + + free(data); +} + static struct ioengine_ops ioengine = { .name = "filecreate", .version = FIO_IOOPS_VERSION, + .init = init, + .cleanup = cleanup, .queue = queue_io, .get_file_size = get_file_size, .open_file = open_file, .close_file = generic_close_file, .flags = FIO_DISKLESSIO | FIO_SYNCIO | FIO_FAKEIO | - FIO_NOSTATS, + FIO_NOSTATS | FIO_NOFILEHASH, }; static void fio_init fio_filecreate_register(void)