X-Git-Url: https://git.kernel.dk/?p=fio.git;a=blobdiff_plain;f=filesetup.c;h=50434e641b7af1cbc9617c50c75e27e1a2cde0f1;hp=4fa04ecd6310adcc88c69c53be3f88759557915b;hb=7abf833d25ab6cc866308fe37483dfe2fde28efc;hpb=21972cdef7db6b557c2d56138f8434658a9d1e49 diff --git a/filesetup.c b/filesetup.c index 4fa04ecd..50434e64 100644 --- a/filesetup.c +++ b/filesetup.c @@ -317,18 +317,18 @@ static int setup_file(struct thread_data *td, struct fio_file *f) if (td->odirect) flags |= OS_O_DIRECT; + if (td->sync_io) + flags |= O_SYNC; if (td_write(td) || td_rw(td)) { + flags |= O_RDWR; + if (td->filetype == FIO_TYPE_FILE) { if (!td->overwrite) flags |= O_TRUNC; flags |= O_CREAT; } - if (td->sync_io) - flags |= O_SYNC; - - flags |= O_RDWR; f->fd = open(f->file_name, flags, 0600); } else { @@ -362,6 +362,16 @@ int open_files(struct thread_data *td) break; } + if (!err) + return 0; + + for_each_file(td, f, i) { + if (f->fd != -1) { + close(f->fd); + f->fd = -1; + } + } + return err; }