X-Git-Url: https://git.kernel.dk/?p=fio.git;a=blobdiff_plain;f=fio.h;h=3ac552b29da8814baa509dce69fa00b7e879eee1;hp=9551048745b685bcb1e1b96ac47aeaa0eef56eab;hb=a3eb1a1eaf1479474dcb12625a1b134978d0060d;hpb=971caeb177d3bc4f65fa31381bbfb83710bfc690 diff --git a/fio.h b/fio.h index 95510487..3ac552b2 100644 --- a/fio.h +++ b/fio.h @@ -27,6 +27,7 @@ #include "ioengines.h" #include "iolog.h" #include "helpers.h" +#include "minmax.h" #include "options.h" #include "profile.h" #include "fio_time.h" @@ -43,6 +44,7 @@ #include "io_u_queue.h" #include "workqueue.h" #include "steadystate.h" +#include "lib/nowarn_snprintf.h" #ifdef CONFIG_SOLARISAIO #include @@ -78,7 +80,7 @@ enum { __TD_F_READ_IOLOG, __TD_F_REFILL_BUFFERS, __TD_F_SCRAMBLE_BUFFERS, - __TD_F_VER_NONE, + __TD_F_DO_VERIFY, __TD_F_PROFILE_OPS, __TD_F_COMPRESS, __TD_F_COMPRESS_LOG, @@ -99,7 +101,7 @@ enum { TD_F_READ_IOLOG = 1U << __TD_F_READ_IOLOG, TD_F_REFILL_BUFFERS = 1U << __TD_F_REFILL_BUFFERS, TD_F_SCRAMBLE_BUFFERS = 1U << __TD_F_SCRAMBLE_BUFFERS, - TD_F_VER_NONE = 1U << __TD_F_VER_NONE, + TD_F_DO_VERIFY = 1U << __TD_F_DO_VERIFY, TD_F_PROFILE_OPS = 1U << __TD_F_PROFILE_OPS, TD_F_COMPRESS = 1U << __TD_F_COMPRESS, TD_F_COMPRESS_LOG = 1U << __TD_F_COMPRESS_LOG, @@ -404,8 +406,6 @@ struct thread_data { struct flist_head trim_list; unsigned long trim_entries; - struct flist_head next_rand_list; - /* * for fileservice, how often to switch to a new file */ @@ -469,7 +469,9 @@ enum { break; \ (td)->error = ____e; \ if (!(td)->first_error) \ - snprintf(td->verror, sizeof(td->verror), "file:%s:%d, func=%s, error=%s", __FILE__, __LINE__, (func), (msg)); \ + nowarn_snprintf(td->verror, sizeof(td->verror), \ + "file:%s:%d, func=%s, error=%s", \ + __FILE__, __LINE__, (func), (msg)); \ } while (0) @@ -531,19 +533,20 @@ extern bool eta_time_within_slack(unsigned int time); static inline void fio_ro_check(const struct thread_data *td, struct io_u *io_u) { - assert(!(io_u->ddir == DDIR_WRITE && !td_write(td))); + assert(!(io_u->ddir == DDIR_WRITE && !td_write(td)) && + !(io_u->ddir == DDIR_TRIM && !td_trim(td))); } #define REAL_MAX_JOBS 4096 -static inline int should_fsync(struct thread_data *td) +static inline bool should_fsync(struct thread_data *td) { if (td->last_was_sync) - return 0; + return false; if (td_write(td) || td->o.override_sync) - return 1; + return true; - return 0; + return false; } /* @@ -565,6 +568,7 @@ extern void fio_fill_default_options(struct thread_data *); extern int fio_show_option_help(const char *); extern void fio_options_set_ioengine_opts(struct option *long_options, struct thread_data *td); extern void fio_options_dup_and_init(struct option *); +extern char *fio_option_dup_subs(const char *); extern void fio_options_mem_dupe(struct thread_data *); extern void td_fill_rand_seeds(struct thread_data *); extern void td_fill_verify_state_seed(struct thread_data *); @@ -719,22 +723,17 @@ static inline bool option_check_rate(struct thread_data *td, enum fio_ddir ddir) return false; } -static inline bool __should_check_rate(struct thread_data *td, - enum fio_ddir ddir) +static inline bool __should_check_rate(struct thread_data *td) { return (td->flags & TD_F_CHECK_RATE) != 0; } static inline bool should_check_rate(struct thread_data *td) { - if (__should_check_rate(td, DDIR_READ) && td->bytes_done[DDIR_READ]) - return true; - if (__should_check_rate(td, DDIR_WRITE) && td->bytes_done[DDIR_WRITE]) - return true; - if (__should_check_rate(td, DDIR_TRIM) && td->bytes_done[DDIR_TRIM]) - return true; + if (!__should_check_rate(td)) + return false; - return false; + return ddir_rw_sum(td->bytes_done) != 0; } static inline unsigned int td_max_bs(struct thread_data *td)