#include <sys/types.h>
#include "fio.h"
-#include "os.h"
static int extend_file(struct thread_data *td, struct fio_file *f)
{
- int r, new_layout = 0, flags;
+ int r, new_layout = 0, unlink_file = 0, flags;
unsigned long long left;
unsigned int bs;
char *b;
*/
if (td_read(td) || (td_write(td) && td->o.overwrite))
new_layout = 1;
+ if (td_write(td) && !td->o.overwrite)
+ unlink_file = 1;
- if (new_layout && (f->flags & FIO_FILE_EXISTS)) {
+ if ((unlink_file || new_layout) && (f->flags & FIO_FILE_EXISTS)) {
if (unlink(f->file_name) < 0) {
td_verror(td, errno, "unlink");
return 1;
/*
* 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)) {
+ log_err("%s\n", td->verror);
+ err = 1;
clear_error(td);
- else
+ } else
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;