return 0;
for_each_file(td, f, i) {
blocks = (f->real_file_size + td->o.rw_min_bs - 1) / (unsigned long long) td->o.rw_min_bs;
num_maps = (blocks + BLOCKS_PER_MAP-1)/ (unsigned long long) BLOCKS_PER_MAP;
return 0;
for_each_file(td, f, i) {
blocks = (f->real_file_size + td->o.rw_min_bs - 1) / (unsigned long long) td->o.rw_min_bs;
num_maps = (blocks + BLOCKS_PER_MAP-1)/ (unsigned long long) BLOCKS_PER_MAP;
+ 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) {
dprint(FD_FILE, "close files\n");
for_each_file(td, f, i) {
- td->files = realloc(td->files, (cur_files + 1) * sizeof(*f));
-
- f = &td->files[cur_files];
- memset(f, 0, sizeof(*f));
+ f = smalloc(sizeof(*f));
len = sprintf(file_name, "%s/", td->o.directory);
sprintf(file_name + len, "%s", fname);
len = sprintf(file_name, "%s/", td->o.directory);
sprintf(file_name + len, "%s", fname);
- 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);
- dprint(FD_FILE, "get put %s/%d\n", f->file_name, f->references);
+ int ret = 0;
+
+ dprint(FD_FILE, "put file %s, ref=%d\n", f->file_name, f->references);
td->files = malloc(bytes);
memcpy(td->files, org->files, bytes);
for_each_file(td, f, i) {
td->files = malloc(bytes);
memcpy(td->files, org->files, bytes);
for_each_file(td, f, i) {