Overflow bugs in random map
[fio.git] / fio.h
diff --git a/fio.h b/fio.h
index ca9fede63f66962f8d3ea4e171e8991c97ee57ea..b7b25b21f37c8b81dc6e152d15955a74297f7980 100644 (file)
--- a/fio.h
+++ b/fio.h
@@ -373,6 +373,11 @@ struct thread_stat {
        unsigned long total_run_time;
 };
 
+struct bssplit {
+       unsigned int bs;
+       unsigned char perc;
+};
+
 struct thread_options {
        int pad;
        char *description;
@@ -395,6 +400,8 @@ struct thread_options {
        unsigned int bs[2];
        unsigned int min_bs[2];
        unsigned int max_bs[2];
+       struct bssplit *bssplit;
+       unsigned int bssplit_nr;
 
        unsigned int nr_files;
        unsigned int open_files;
@@ -674,7 +681,7 @@ static inline void fio_ro_check(struct thread_data *td, struct io_u *io_u)
 }
 
 #define BLOCKS_PER_MAP         (8 * sizeof(long))
-#define TO_MAP_BLOCK(td, f, b) ((b) - ((f)->file_offset / (td)->o.rw_min_bs))
+#define TO_MAP_BLOCK(td, f, b) ((b) - ((f)->file_offset / (unsigned long long) (td)->o.rw_min_bs))
 #define RAND_MAP_IDX(td, f, b) (TO_MAP_BLOCK(td, f, b) / BLOCKS_PER_MAP)
 #define RAND_MAP_BIT(td, f, b) (TO_MAP_BLOCK(td, f, b) & (BLOCKS_PER_MAP - 1))