X-Git-Url: https://git.kernel.dk/?p=fio.git;a=blobdiff_plain;f=fio.h;h=ca35ffcd5e7884c8fce02f9ad741b45bb8a67e10;hp=028ef4cb9ec2e79b0296639a2ddc69b2bfdd24a1;hb=126d65c6fc97d6acdc568aa5a969c012018daf15;hpb=6ae1f57f2cb8661b97b770372eeb3694f6d5a744 diff --git a/fio.h b/fio.h index 028ef4cb..ca35ffcd 100644 --- a/fio.h +++ b/fio.h @@ -22,6 +22,8 @@ #include "arch/arch.h" #include "os/os.h" #include "mutex.h" +#include "log.h" +#include "debug.h" #ifdef FIO_HAVE_GUASI #include @@ -496,7 +498,7 @@ struct thread_data { int thread_number; int groupid; struct thread_stat ts; - struct fio_file *files; + struct fio_file **files; unsigned int files_index; unsigned int nr_open_files; unsigned int nr_done_files; @@ -561,7 +563,7 @@ struct thread_data { unsigned long long io_skip_bytes; unsigned long long this_io_bytes[2]; unsigned long long zone_bytes; - struct fio_sem *mutex; + struct fio_mutex *mutex; /* * State for random io, a bitmap of blocks done vs not done @@ -659,8 +661,6 @@ extern int nr_process, nr_thread; extern int shm_id; extern int groupid; extern int terse_output; -extern FILE *f_out; -extern FILE *f_err; extern int temp_stall_ts; extern unsigned long long mlock_size; extern unsigned long page_mask, page_size; @@ -800,14 +800,15 @@ extern void options_mem_free(struct thread_data *); * File setup/shutdown */ extern void close_files(struct thread_data *); +extern void close_and_free_files(struct thread_data *); extern int __must_check setup_files(struct thread_data *); extern int __must_check open_files(struct thread_data *); extern int __must_check file_invalidate_cache(struct thread_data *, struct fio_file *); extern int __must_check generic_open_file(struct thread_data *, struct fio_file *); -extern void generic_close_file(struct thread_data *, struct fio_file *); +extern int __must_check generic_close_file(struct thread_data *, struct fio_file *); extern int add_file(struct thread_data *, const char *); extern void get_file(struct fio_file *); -extern void put_file(struct thread_data *, struct fio_file *); +extern int __must_check put_file(struct thread_data *, struct fio_file *); extern int add_dir_files(struct thread_data *, const char *); extern int init_random_map(struct thread_data *); extern void dup_files(struct thread_data *, struct thread_data *); @@ -893,7 +894,7 @@ extern int __must_check td_io_sync(struct thread_data *, struct fio_file *); extern int __must_check td_io_getevents(struct thread_data *, unsigned int, unsigned int, struct timespec *); extern int __must_check td_io_commit(struct thread_data *); extern int __must_check td_io_open_file(struct thread_data *, struct fio_file *); -extern void td_io_close_file(struct thread_data *, struct fio_file *); +extern int td_io_close_file(struct thread_data *, struct fio_file *); /* * blktrace support @@ -903,20 +904,6 @@ extern int is_blktrace(const char *); extern int load_blktrace(struct thread_data *, const char *); #endif -/* - * If logging output to a file, stderr should go to both stderr and f_err - */ -#define log_err(args...) do { \ - fprintf(f_err, ##args); \ - if (f_err != stderr) \ - fprintf(stderr, ##args); \ - } while (0) - -#define log_info(args...) fprintf(f_out, ##args) - -FILE *get_f_out(void); -FILE *get_f_err(void); - struct ioengine_ops { struct list_head list; char name[16]; @@ -932,12 +919,12 @@ struct ioengine_ops { int (*cancel)(struct thread_data *, struct io_u *); void (*cleanup)(struct thread_data *); int (*open_file)(struct thread_data *, struct fio_file *); - void (*close_file)(struct thread_data *, struct fio_file *); + int (*close_file)(struct thread_data *, struct fio_file *); void *data; void *dlhandle; }; -#define FIO_IOOPS_VERSION 8 +#define FIO_IOOPS_VERSION 9 extern struct ioengine_ops *load_ioengine(struct thread_data *, const char *); extern void register_ioengine(struct ioengine_ops *); @@ -954,7 +941,7 @@ extern void close_ioengine(struct thread_data *); #define for_each_td(td, i) \ for ((i) = 0, (td) = &threads[0]; (i) < (int) thread_number; (i)++, (td)++) #define for_each_file(td, f, i) \ - for ((i) = 0, (f) = &(td)->files[0]; (i) < (td)->o.nr_files; (i)++, (f)++) + for ((i) = 0, (f) = (td)->files[0]; (i) < (td)->o.nr_files; (i)++, (f)++) #define fio_assert(td, cond) do { \ if (!(cond)) { \ @@ -972,35 +959,7 @@ static inline void clear_error(struct thread_data *td) td->verror[0] = '\0'; } -enum { - FD_PROCESS = 0, - FD_FILE, - FD_IO, - FD_MEM, - FD_BLKTRACE, - FD_VERIFY, - FD_RANDOM, - FD_DEBUG_MAX, -}; - #ifdef FIO_INC_DEBUG -struct debug_level { - const char *name; - unsigned long shift; -}; -extern struct debug_level debug_levels[]; - -extern unsigned long fio_debug; - -#define dprint(type, str, args...) \ - do { \ - assert(type < FD_DEBUG_MAX); \ - if ((((1 << type)) & fio_debug) == 0) \ - break; \ - log_info("%-8s ", debug_levels[(type)].name); \ - log_info(str, ##args); \ - } while (0) - static inline void dprint_io_u(struct io_u *io_u, const char *p) { struct fio_file *f = io_u->file; @@ -1015,7 +974,6 @@ static inline void dprint_io_u(struct io_u *io_u, const char *p) } } #else -#define dprint(type, str, args...) #define dprint_io_u(io_u, p) #endif