return 0;
need_create = 0;
- if (td->filetype == FIO_TYPE_FILE)
- for_each_file(td, f, i)
- need_create += file_ok(td, f);
+ if (td->filetype == FIO_TYPE_FILE) {
+ for_each_file(td, f, i) {
+ int file_there = !file_ok(td, f);
+
+ if (file_there && td->ddir == DDIR_WRITE &&
+ !td->overwrite) {
+ unlink(f->file_name);
+ file_there = 0;
+ }
+
+ need_create += !file_there;
+ }
+ }
if (!need_create)
return 0;
err = 0;
for_each_file(td, f, i) {
+ /*
+ * Only unlink files that we created.
+ */
+ f->unlink = 0;
if (file_ok(td, f)) {
+ f->unlink = td->unlink;
err = create_file(td, f);
if (err)
break;
if (!f->file_size || f->file_size > f->real_file_size)
f->file_size = f->real_file_size;
- }
+ } else
+ f->real_file_size = f->file_size;
- f->file_size -= f->file_offset;
return 0;
}
{
int flags = 0;
+ if (td->io_ops->flags & FIO_NETIO)
+ return 0;
if (td->odirect)
flags |= OS_O_DIRECT;
if (td->sync_io)
int i;
for_each_file(td, f, i) {
- if (!td->filename && td->unlink &&
+ if (!td->filename && f->unlink &&
td->filetype == FIO_TYPE_FILE) {
unlink(f->file_name);
free(f->file_name);