Avoid opening files until they are used

Fio still opens and creates all files, just to check the size of them. Add
a specialized IO engine op for getting the size of a file and use that
instead.

This also cleans a lot of things up. Note that the IO engine version is now
bumped to 10, meaning that external engines will have to separate the
file open from the size checking.

Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
diff --git a/ioengines.c b/ioengines.c
index 8073d1b..2969840 100644
--- a/ioengines.c
+++ b/ioengines.c
@@ -405,3 +405,11 @@
 
 	return put_file(td, f);
 }
+
+int td_io_get_file_size(struct thread_data *td, struct fio_file *f)
+{
+	if (!td->io_ops->get_file_size)
+		return 0;
+
+	return td->io_ops->get_file_size(td, f);
+}