Add close_files() that closes all files
[fio.git] / filesetup.c
index 20ef3f8ffc97ce238e39ba4f2ef21e46a188bf7a..3e11c4c651050889457e37ccca6160204e81d0dd 100644 (file)
@@ -33,8 +33,8 @@ static int extend_file(struct thread_data *td, struct fio_file *f)
        if (td_write(td) && !td->o.overwrite)
                unlink_file = 1;
 
-       if ((unlink_file || new_layout) && (f->flags & FIO_FILE_EXISTS)) {
-               if (unlink(f->file_name) < 0) {
+       if (unlink_file || new_layout) {
+               if ((unlink(f->file_name) < 0) && (errno != ENOENT)) {
                        td_verror(td, errno, "unlink");
                        return 1;
                }
@@ -497,7 +497,7 @@ int init_random_map(struct thread_data *td)
        struct fio_file *f;
        unsigned int i;
 
-       if (td->o.norandommap)
+       if (td->o.norandommap || !td_random(td))
                return 0;
 
        for_each_file(td, f, i) {
@@ -520,6 +520,15 @@ void close_files(struct thread_data *td)
        struct fio_file *f;
        unsigned int i;
 
+       for_each_file(td, f, i)
+               td_io_close_file(td, f);
+}
+
+void close_and_free_files(struct thread_data *td)
+{
+       struct fio_file *f;
+       unsigned int i;
+
        dprint(FD_FILE, "close files\n");
 
        for_each_file(td, f, i) {
@@ -600,14 +609,14 @@ int add_file(struct thread_data *td, const char *fname)
 
 void get_file(struct fio_file *f)
 {
-       dprint(FD_FILE, "get file %s/%d\n", f->file_name, f->references);
+       dprint(FD_FILE, "get file %s, ref=%d\n", f->file_name, f->references);
        assert(f->flags & FIO_FILE_OPEN);
        f->references++;
 }
 
 void put_file(struct thread_data *td, struct fio_file *f)
 {
-       dprint(FD_FILE, "get put %s/%d\n", f->file_name, f->references);
+       dprint(FD_FILE, "put file %s, ref=%d\n", f->file_name, f->references);
 
        if (!(f->flags & FIO_FILE_OPEN))
                return;