t/io_uring: Fix the parameters calculation for multiple threads scenario
[fio.git] / thread_options.h
index 4b4ecfe104dbedb1f76fcee0aa31cb6dbf024cc3..6e1a2cddd1876a6796fd9cd048b27153da01b2c4 100644 (file)
@@ -44,6 +44,12 @@ enum dedupe_mode {
 #define BSSPLIT_MAX    64
 #define ZONESPLIT_MAX  256
 
+struct split {
+       unsigned int nr;
+       unsigned long long val1[ZONESPLIT_MAX];
+       unsigned long long val2[ZONESPLIT_MAX];
+};
+
 struct bssplit {
        uint64_t bs;
        uint32_t perc;
@@ -185,10 +191,6 @@ struct thread_options {
 
        unsigned int hugepage_size;
        unsigned long long rw_min_bs;
-       unsigned int thinktime;
-       unsigned int thinktime_spin;
-       unsigned int thinktime_blocks;
-       unsigned int thinktime_blocks_type;
        unsigned int fsync_blocks;
        unsigned int fdatasync_blocks;
        unsigned int barrier_blocks;
@@ -297,6 +299,12 @@ struct thread_options {
        char *exec_prerun;
        char *exec_postrun;
 
+       unsigned int thinktime;
+       unsigned int thinktime_spin;
+       unsigned int thinktime_blocks;
+       unsigned int thinktime_blocks_type;
+       unsigned int thinktime_iotime;
+
        uint64_t rate[DDIR_RWDIR_CNT];
        uint64_t ratemin[DDIR_RWDIR_CNT];
        unsigned int ratecycle;
@@ -368,6 +376,8 @@ struct thread_options {
        unsigned int ignore_zone_limits;
        fio_fp64_t zrt;
        fio_fp64_t zrf;
+
+       unsigned int log_prio;
 };
 
 #define FIO_TOP_STR_MAX                256
@@ -496,10 +506,6 @@ struct thread_options_pack {
 
        uint32_t hugepage_size;
        uint64_t rw_min_bs;
-       uint32_t thinktime;
-       uint32_t thinktime_spin;
-       uint32_t thinktime_blocks;
-       uint32_t thinktime_blocks_type;
        uint32_t fsync_blocks;
        uint32_t fdatasync_blocks;
        uint32_t barrier_blocks;
@@ -604,6 +610,12 @@ struct thread_options_pack {
        uint8_t exec_prerun[FIO_TOP_STR_MAX];
        uint8_t exec_postrun[FIO_TOP_STR_MAX];
 
+       uint32_t thinktime;
+       uint32_t thinktime_spin;
+       uint32_t thinktime_blocks;
+       uint32_t thinktime_blocks_type;
+       uint32_t thinktime_iotime;
+
        uint64_t rate[DDIR_RWDIR_CNT];
        uint64_t ratemin[DDIR_RWDIR_CNT];
        uint32_t ratecycle;
@@ -643,7 +655,6 @@ struct thread_options_pack {
        uint64_t latency_target;
        uint64_t latency_window;
        uint64_t max_latency[DDIR_RWDIR_CNT];
-       uint32_t pad5;
        fio_fp64_t latency_percentile;
        uint32_t latency_run;
 
@@ -671,6 +682,8 @@ struct thread_options_pack {
        uint32_t zone_mode;
        int32_t max_open_zones;
        uint32_t ignore_zone_limits;
+
+       uint32_t log_prio;
 } __attribute__((packed));
 
 extern void convert_thread_options_to_cpu(struct thread_options *o, struct thread_options_pack *top);
@@ -678,4 +691,13 @@ extern void convert_thread_options_to_net(struct thread_options_pack *top, struc
 extern int fio_test_cconv(struct thread_options *);
 extern void options_default_fill(struct thread_options *o);
 
+typedef int (split_parse_fn)(struct thread_options *, void *,
+                            enum fio_ddir, char *, bool);
+
+extern int str_split_parse(struct thread_data *td, char *str,
+                          split_parse_fn *fn, void *eo, bool data);
+
+extern int split_parse_ddir(struct thread_options *o, struct split *split,
+                           char *str, bool absolute, unsigned int max_splits);
+
 #endif