#include <sys/types.h>
#include "fio.h"
-#include "os.h"
static int extend_file(struct thread_data *td, struct fio_file *f)
{
/*
* open/close all files, so that ->real_file_size gets set
*/
-static void get_file_sizes(struct thread_data *td)
+static int get_file_sizes(struct thread_data *td)
{
struct fio_file *f;
unsigned int i;
+ int err = 0;
for_each_file(td, f, i) {
- if (td->io_ops->open_file(td, f))
+ if (td->io_ops->open_file(td, f)) {
+ if (td->error != ENOENT) {
+ log_err("%s\n", td->verror);
+ err = 1;
+ }
clear_error(td);
- else
- td->io_ops->close_file(td, f);
+ } else {
+ if (td->io_ops->close_file)
+ td->io_ops->close_file(td, f);
+ }
if (f->real_file_size == -1ULL && td->o.size)
f->real_file_size = td->o.size / td->o.nr_files;
}
+
+ return err;
}
/*
if (td->io_ops->setup)
err = td->io_ops->setup(td);
else
- get_file_sizes(td);
+ err = get_file_sizes(td);
if (err)
return err;
memset(f, 0, sizeof(*f));
f->fd = -1;
+ /*
+ * init function, io engine may not be loaded yet
+ */
+ if (td->io_ops && (td->io_ops->flags & FIO_DISKLESSIO))
+ f->real_file_size = -1ULL;
+
if (td->o.directory)
len = sprintf(file_name, "%s/", td->o.directory);