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/engines/sync.c b/engines/sync.c
index 4ca04d5..842c6c0 100644
--- a/engines/sync.c
+++ b/engines/sync.c
@@ -283,6 +283,7 @@
 	.queue		= fio_syncio_queue,
 	.open_file	= generic_open_file,
 	.close_file	= generic_close_file,
+	.get_file_size	= generic_get_file_size,
 	.flags		= FIO_SYNCIO,
 };
 
@@ -292,6 +293,7 @@
 	.queue		= fio_psyncio_queue,
 	.open_file	= generic_open_file,
 	.close_file	= generic_close_file,
+	.get_file_size	= generic_get_file_size,
 	.flags		= FIO_SYNCIO,
 };
 
@@ -306,6 +308,7 @@
 	.getevents	= fio_vsyncio_getevents,
 	.open_file	= generic_open_file,
 	.close_file	= generic_close_file,
+	.get_file_size	= generic_get_file_size,
 	.flags		= FIO_SYNCIO,
 };