X-Git-Url: https://git.kernel.dk/?a=blobdiff_plain;f=thread_options.h;h=74e7ea45868b50a8701079fa99d23e81d7a2ab9f;hb=50eaefa5cdaeb345df1f9902fe87d55aa48dc206;hp=450e7ddeee25d2ac471e79da637bbf8e168d4502;hpb=d5b3cfd4064d5414c1bce4acc65c181db86a8634;p=fio.git diff --git a/thread_options.h b/thread_options.h index 450e7dde..74e7ea45 100644 --- a/thread_options.h +++ b/thread_options.h @@ -50,6 +50,12 @@ struct split { unsigned long long val2[ZONESPLIT_MAX]; }; +struct split_prio { + uint64_t bs; + int32_t prio; + uint32_t perc; +}; + struct bssplit { uint64_t bs; uint32_t perc; @@ -138,7 +144,7 @@ struct thread_options { unsigned int do_verify; unsigned int verify_interval; unsigned int verify_offset; - char verify_pattern[MAX_PATTERN_SIZE]; + char *verify_pattern; unsigned int verify_pattern_bytes; struct pattern_fmt verify_fmt[8]; unsigned int verify_fmt_sz; @@ -250,13 +256,14 @@ struct thread_options { unsigned int zero_buffers; unsigned int refill_buffers; unsigned int scramble_buffers; - char buffer_pattern[MAX_PATTERN_SIZE]; + char *buffer_pattern; unsigned int buffer_pattern_bytes; unsigned int compress_percentage; unsigned int compress_chunk; unsigned int dedupe_percentage; unsigned int dedupe_mode; unsigned int dedupe_working_set_percentage; + unsigned int dedupe_global; unsigned int time_based; unsigned int disable_lat; unsigned int disable_clat; @@ -457,7 +464,6 @@ struct thread_options_pack { uint32_t do_verify; uint32_t verify_interval; uint32_t verify_offset; - uint8_t verify_pattern[MAX_PATTERN_SIZE]; uint32_t verify_pattern_bytes; uint32_t verify_fatal; uint32_t verify_dump; @@ -565,13 +571,13 @@ struct thread_options_pack { uint32_t zero_buffers; uint32_t refill_buffers; uint32_t scramble_buffers; - uint8_t buffer_pattern[MAX_PATTERN_SIZE]; uint32_t buffer_pattern_bytes; uint32_t compress_percentage; uint32_t compress_chunk; uint32_t dedupe_percentage; uint32_t dedupe_mode; uint32_t dedupe_working_set_percentage; + uint32_t dedupe_global; uint32_t time_based; uint32_t disable_lat; uint32_t disable_clat; @@ -590,6 +596,7 @@ struct thread_options_pack { uint32_t lat_percentiles; uint32_t slat_percentiles; uint32_t percentile_precision; + uint32_t pad5; fio_fp64_t percentile_list[FIO_IO_U_LIST_MAX_LEN]; uint8_t read_iolog_file[FIO_TOP_STR_MAX]; @@ -690,9 +697,16 @@ struct thread_options_pack { uint32_t log_entries; uint32_t log_prio; + + /* + * verify_pattern followed by buffer_pattern from the unpacked struct + */ + uint8_t patterns[]; } __attribute__((packed)); -extern void convert_thread_options_to_cpu(struct thread_options *o, struct thread_options_pack *top); +extern int convert_thread_options_to_cpu(struct thread_options *o, + struct thread_options_pack *top, size_t top_sz); +extern size_t thread_options_pack_size(struct thread_options *o); extern void convert_thread_options_to_net(struct thread_options_pack *top, struct thread_options *); extern int fio_test_cconv(struct thread_options *); extern void options_default_fill(struct thread_options *o); @@ -706,4 +720,8 @@ extern int str_split_parse(struct thread_data *td, char *str, extern int split_parse_ddir(struct thread_options *o, struct split *split, char *str, bool absolute, unsigned int max_splits); +extern int split_parse_prio_ddir(struct thread_options *o, + struct split_prio **entries, int *nr_entries, + char *str); + #endif