From 9e9d41d7e283f23560b5b3a78b899361b13a290a Mon Sep 17 00:00:00 2001 From: Jens Axboe Date: Thu, 7 Jan 2016 14:22:09 -0700 Subject: [PATCH 1/1] verify: split out state header code We'll need to use it in a separate helper utility, and we don't need all the verify code for this. Signed-off-by: Jens Axboe --- verify-state.h | 94 ++++++++++++++++++++++++++++++++++++++++++++++++++ verify.h | 88 +--------------------------------------------- 2 files changed, 95 insertions(+), 87 deletions(-) create mode 100644 verify-state.h diff --git a/verify-state.h b/verify-state.h new file mode 100644 index 00000000..458f5809 --- /dev/null +++ b/verify-state.h @@ -0,0 +1,94 @@ +#ifndef FIO_VERIFY_STATE_H +#define FIO_VERIFY_STATE_H + +#include + +struct thread_rand32_state { + uint32_t s[4]; +}; + +struct thread_rand64_state { + uint64_t s[6]; +}; + +struct thread_rand_state { + uint64_t use64; + union { + struct thread_rand32_state state32; + struct thread_rand64_state state64; + }; +}; + +/* + * For dumping current write state + */ +struct thread_io_list { + uint64_t no_comps; + uint64_t depth; + uint64_t numberio; + uint64_t index; + struct thread_rand_state rand; + uint8_t name[64]; + uint64_t offsets[0]; +}; + +struct thread_io_list_v1 { + uint64_t no_comps; + uint64_t depth; + uint64_t numberio; + uint64_t index; + struct thread_rand32_state rand; + uint8_t name[64]; + uint64_t offsets[0]; +}; + +struct all_io_list { + uint64_t threads; + struct thread_io_list state[0]; +}; + +#define VSTATE_HDR_VERSION_V1 0x01 +#define VSTATE_HDR_VERSION 0x02 + +struct verify_state_hdr { + uint64_t version; + uint64_t size; + uint64_t crc; +}; + +#define IO_LIST_ALL 0xffffffff + +extern struct all_io_list *get_all_io_list(int, size_t *); +extern void __verify_save_state(struct all_io_list *, const char *); +extern void verify_save_state(int mask); +extern int verify_load_state(struct thread_data *, const char *); +extern void verify_free_state(struct thread_data *); +extern int verify_state_should_stop(struct thread_data *, struct io_u *); +extern void verify_convert_assign_state(struct thread_data *, void *, int); +extern int verify_state_hdr(struct verify_state_hdr *, struct thread_io_list *, + int *); + +static inline size_t __thread_io_list_sz(uint64_t depth) +{ + return sizeof(struct thread_io_list) + depth * sizeof(uint64_t); +} + +static inline size_t thread_io_list_sz(struct thread_io_list *s) +{ + return __thread_io_list_sz(le64_to_cpu(s->depth)); +} + +static inline struct thread_io_list *io_list_next(struct thread_io_list *s) +{ + return (void *) s + thread_io_list_sz(s); +} + +static inline void verify_state_gen_name(char *out, size_t size, + const char *name, const char *prefix, + int num) +{ + snprintf(out, size, "%s-%s-%d-verify.state", prefix, name, num); + out[size - 1] = '\0'; +} + +#endif diff --git a/verify.h b/verify.h index 87675af8..deb161e2 100644 --- a/verify.h +++ b/verify.h @@ -2,6 +2,7 @@ #define FIO_VERIFY_H #include +#include "verify-state.h" #define FIO_HDR_MAGIC 0xacca @@ -94,91 +95,4 @@ extern void verify_async_exit(struct thread_data *); */ extern int paste_blockoff(char *buf, unsigned int len, void *priv); -struct thread_rand32_state { - uint32_t s[4]; -}; - -struct thread_rand64_state { - uint64_t s[6]; -}; - -struct thread_rand_state { - uint64_t use64; - union { - struct thread_rand32_state state32; - struct thread_rand64_state state64; - }; -}; - -/* - * For dumping current write state - */ -struct thread_io_list { - uint64_t no_comps; - uint64_t depth; - uint64_t numberio; - uint64_t index; - struct thread_rand_state rand; - uint8_t name[64]; - uint64_t offsets[0]; -}; - -struct thread_io_list_v1 { - uint64_t no_comps; - uint64_t depth; - uint64_t numberio; - uint64_t index; - struct thread_rand32_state rand; - uint8_t name[64]; - uint64_t offsets[0]; -}; - -struct all_io_list { - uint64_t threads; - struct thread_io_list state[0]; -}; - -#define VSTATE_HDR_VERSION_V1 0x01 -#define VSTATE_HDR_VERSION 0x02 - -struct verify_state_hdr { - uint64_t version; - uint64_t size; - uint64_t crc; -}; - -#define IO_LIST_ALL 0xffffffff -extern struct all_io_list *get_all_io_list(int, size_t *); -extern void __verify_save_state(struct all_io_list *, const char *); -extern void verify_save_state(int mask); -extern int verify_load_state(struct thread_data *, const char *); -extern void verify_free_state(struct thread_data *); -extern int verify_state_should_stop(struct thread_data *, struct io_u *); -extern void verify_convert_assign_state(struct thread_data *, void *, int); -extern int verify_state_hdr(struct verify_state_hdr *, struct thread_io_list *, - int *); - -static inline size_t __thread_io_list_sz(uint64_t depth) -{ - return sizeof(struct thread_io_list) + depth * sizeof(uint64_t); -} - -static inline size_t thread_io_list_sz(struct thread_io_list *s) -{ - return __thread_io_list_sz(le64_to_cpu(s->depth)); -} - -static inline struct thread_io_list *io_list_next(struct thread_io_list *s) -{ - return (void *) s + thread_io_list_sz(s); -} - -static inline void verify_state_gen_name(char *out, size_t size, - const char *name, const char *prefix, - int num) -{ - snprintf(out, size, "%s-%s-%d-verify.state", prefix, name, num); - out[size - 1] = '\0'; -} - #endif -- 2.25.1