For non-file engines, set ->real_file_size if total size is known
Fixes a segfault with rand* directions.
Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
diff --git a/engines/cpu.c b/engines/cpu.c
index cfdf281..dd69ced 100644
--- a/engines/cpu.c
+++ b/engines/cpu.c
@@ -18,8 +18,12 @@
struct fio_file *f;
unsigned int i;
- for_each_file(td, f, i)
- f->real_file_size = -1ULL;
+ for_each_file(td, f, i) {
+ if (td->o.size)
+ f->real_file_size = td->o.size / td->o.nr_files;
+ else
+ f->real_file_size = -1ULL;
+ }
return 0;
}
@@ -47,9 +51,9 @@
return 0;
}
-static int fio_cpuio_open(struct thread_data fio_unused *td, struct fio_file *f)
+static int fio_cpuio_open(struct thread_data fio_unused *td,
+ struct fio_file fio_unused *f)
{
- f->fd = 0;
return 0;
}
diff --git a/engines/net.c b/engines/net.c
index 4de86c1..cc707db 100644
--- a/engines/net.c
+++ b/engines/net.c
@@ -279,8 +279,12 @@
nd->listenfd = -1;
td->io_ops->data = nd;
- for_each_file(td, f, i)
- f->real_file_size = -1ULL;
+ for_each_file(td, f, i) {
+ if (td->o.size)
+ f->real_file_size = td->o.size / td->o.nr_files;
+ else
+ f->real_file_size = -1ULL;
+ }
}
return 0;
diff --git a/engines/null.c b/engines/null.c
index 70d1fa7..318952c 100644
--- a/engines/null.c
+++ b/engines/null.c
@@ -70,8 +70,12 @@
struct fio_file *f;
unsigned int i;
- for_each_file(td, f, i)
- f->real_file_size = -1ULL;
+ for_each_file(td, f, i) {
+ if (td->o.size)
+ f->real_file_size = td->o.size / td->o.nr_files;
+ else
+ f->real_file_size = -1ULL;
+ }
return 0;
}
@@ -79,7 +83,6 @@
static int fio_null_open(struct thread_data fio_unused *td,
struct fio_file fio_unused *f)
{
- f->fd = 0;
return 0;
}