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;
 }