X-Git-Url: https://git.kernel.dk/?p=fio.git;a=blobdiff_plain;f=filesetup.c;h=7a9a2afed29b34d345e1628156c2d3ac6848163c;hp=f0c42e896de1afc336888f949045b8b493087c61;hb=21bd2987dc5d82a18af485cd1e7841e94137fc0c;hpb=d424d4dd657eaf4aeb8ffb07a550a5f64940f41a diff --git a/filesetup.c b/filesetup.c index f0c42e89..7a9a2afe 100644 --- a/filesetup.c +++ b/filesetup.c @@ -209,6 +209,12 @@ int generic_open_file(struct thread_data *td, struct fio_file *f) return 1; } is_std = 1; + + /* + * move output logging to stderr, if we are writing to stdout + */ + if (td_write(td)) + f_out = stderr; } if (td->o.odirect) @@ -216,7 +222,7 @@ int generic_open_file(struct thread_data *td, struct fio_file *f) if (td->o.sync_io) flags |= O_SYNC; - if (td_write(td) || td_rw(td)) { + if (td_write(td)) { flags |= O_RDWR; if (f->filetype == FIO_TYPE_FILE) @@ -468,8 +474,7 @@ void close_files(struct thread_data *td) 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); @@ -508,7 +513,7 @@ static void get_file_type(struct fio_file *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]; @@ -538,10 +543,13 @@ void add_file(struct thread_data *td, const char *fname) 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++; } @@ -639,3 +647,28 @@ void dup_files(struct thread_data *td, struct thread_data *org) 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; +}