unsigned int i;
for_each_file(td, f, i) {
- if ((f->flags & FIO_FILE_UNLINK) &&
- f->filetype == FIO_TYPE_FILE)
+ if (td->o.unlink && f->filetype == FIO_TYPE_FILE)
unlink(f->file_name);
td_io_close_file(td, f);
}
}
-void add_file(struct thread_data *td, const char *fname)
+int add_file(struct thread_data *td, const char *fname)
{
int cur_files = td->files_index;
char file_name[PATH_MAX];
td->files_index++;
if (f->filetype == FIO_TYPE_FILE)
td->nr_normal_files++;
+
+ return cur_files;
}
void get_file(struct fio_file *f)
{
+ assert(f->flags & FIO_FILE_OPEN);
f->references++;
}
f->file_name = strdup(f->file_name);
}
}
+
+/*
+ * Returns the index that matches the filename, or -1 if not there
+ */
+int get_fileno(struct thread_data *td, const char *fname)
+{
+ struct fio_file *f;
+ unsigned int i;
+
+ for_each_file(td, f, i)
+ if (!strcmp(f->file_name, fname))
+ return i;
+
+ return -1;
+}
+
+/*
+ * For log usage, where we add/open/close files automatically
+ */
+void free_release_files(struct thread_data *td)
+{
+ close_files(td);
+ td->files_index = 0;
+ td->nr_normal_files = 0;
+}