Commit | Line | Data |
---|---|---|
9e9d41d7 JA |
1 | #ifndef FIO_VERIFY_STATE_H |
2 | #define FIO_VERIFY_STATE_H | |
3 | ||
4 | #include <stdint.h> | |
5 | ||
6 | struct thread_rand32_state { | |
7 | uint32_t s[4]; | |
8 | }; | |
9 | ||
10 | struct thread_rand64_state { | |
11 | uint64_t s[6]; | |
12 | }; | |
13 | ||
14 | struct thread_rand_state { | |
15 | uint64_t use64; | |
16 | union { | |
17 | struct thread_rand32_state state32; | |
18 | struct thread_rand64_state state64; | |
19 | }; | |
20 | }; | |
21 | ||
22 | /* | |
23 | * For dumping current write state | |
24 | */ | |
94a6e1bb JA |
25 | struct file_comp { |
26 | uint64_t fileno; | |
27 | uint64_t offset; | |
9e9d41d7 JA |
28 | }; |
29 | ||
94a6e1bb | 30 | struct thread_io_list { |
9e9d41d7 | 31 | uint64_t no_comps; |
94a6e1bb JA |
32 | uint32_t depth; |
33 | uint32_t nofiles; | |
9e9d41d7 JA |
34 | uint64_t numberio; |
35 | uint64_t index; | |
94a6e1bb | 36 | struct thread_rand_state rand; |
9e9d41d7 | 37 | uint8_t name[64]; |
94a6e1bb | 38 | struct file_comp comps[0]; |
9e9d41d7 JA |
39 | }; |
40 | ||
41 | struct all_io_list { | |
42 | uint64_t threads; | |
43 | struct thread_io_list state[0]; | |
44 | }; | |
45 | ||
94a6e1bb | 46 | #define VSTATE_HDR_VERSION 0x03 |
9e9d41d7 JA |
47 | |
48 | struct verify_state_hdr { | |
49 | uint64_t version; | |
50 | uint64_t size; | |
51 | uint64_t crc; | |
52 | }; | |
53 | ||
54 | #define IO_LIST_ALL 0xffffffff | |
55 | ||
17d4fb1d | 56 | struct io_u; |
9e9d41d7 JA |
57 | extern struct all_io_list *get_all_io_list(int, size_t *); |
58 | extern void __verify_save_state(struct all_io_list *, const char *); | |
59 | extern void verify_save_state(int mask); | |
60 | extern int verify_load_state(struct thread_data *, const char *); | |
61 | extern void verify_free_state(struct thread_data *); | |
62 | extern int verify_state_should_stop(struct thread_data *, struct io_u *); | |
94a6e1bb JA |
63 | extern void verify_assign_state(struct thread_data *, void *); |
64 | extern int verify_state_hdr(struct verify_state_hdr *, struct thread_io_list *); | |
9e9d41d7 | 65 | |
94a6e1bb | 66 | static inline size_t __thread_io_list_sz(uint32_t depth, uint32_t nofiles) |
9e9d41d7 | 67 | { |
94a6e1bb | 68 | return sizeof(struct thread_io_list) + depth * nofiles * sizeof(struct file_comp); |
9e9d41d7 JA |
69 | } |
70 | ||
71 | static inline size_t thread_io_list_sz(struct thread_io_list *s) | |
72 | { | |
94a6e1bb | 73 | return __thread_io_list_sz(le32_to_cpu(s->depth), le32_to_cpu(s->nofiles)); |
9e9d41d7 JA |
74 | } |
75 | ||
76 | static inline struct thread_io_list *io_list_next(struct thread_io_list *s) | |
77 | { | |
78 | return (void *) s + thread_io_list_sz(s); | |
79 | } | |
80 | ||
81 | static inline void verify_state_gen_name(char *out, size_t size, | |
82 | const char *name, const char *prefix, | |
83 | int num) | |
84 | { | |
85 | snprintf(out, size, "%s-%s-%d-verify.state", prefix, name, num); | |
86 | out[size - 1] = '\0'; | |
87 | } | |
88 | ||
89 | #endif |