- if (!flist_empty(&filename_list))
- {
- flist_for_each_safe(entry, tmp, &filename_list) {
- fn = flist_entry(entry, struct file_name, list);
- free(fn->filename);
- flist_del(&fn->list);
- free(fn);
- }
+ if (flist_empty(&filename_list))
+ return;
+
+ fio_file_hash_lock();
+ flist_for_each_safe(entry, tmp, &filename_list) {
+ fn = flist_entry(entry, struct file_name, list);
+ free(fn->filename);
+ flist_del(&fn->list);
+ free(fn);
+ }
+
+ fio_file_hash_unlock();
+}
+
+static struct fio_file *alloc_new_file(struct thread_data *td)
+{
+ struct fio_file *f;
+
+ f = smalloc(sizeof(*f));
+ if (!f) {
+ log_err("fio: smalloc OOM\n");
+ assert(0);
+ return NULL;