X-Git-Url: https://git.kernel.dk/?p=fio.git;a=blobdiff_plain;f=verify.h;h=64121a51af97d68e75fefe12dc178f3b3218b0ce;hp=3e52f9c1872974599c0e541955caacc83a12d3b5;hb=fb1a0dcdc0869f0c92c49f13e640c15f4ab3b7e2;hpb=ca09be4b1a8e97f0bca5cfbddb399899cf561eaa diff --git a/verify.h b/verify.h index 3e52f9c1..64121a51 100644 --- a/verify.h +++ b/verify.h @@ -2,11 +2,16 @@ #define FIO_VERIFY_H #include +#include "compiler/compiler.h" +#include "verify-state.h" #define FIO_HDR_MAGIC 0xacca enum { VERIFY_NONE = 0, /* no verification */ + VERIFY_HDR_ONLY, /* verify header only, kept for sake of + * compatibility with old configurations + * which use 'verify=meta' */ VERIFY_MD5, /* md5 sum data blocks */ VERIFY_CRC64, /* crc64 sum data blocks */ VERIFY_CRC32, /* crc32 sum data blocks */ @@ -16,10 +21,14 @@ enum { VERIFY_CRC7, /* crc7 sum data blocks */ VERIFY_SHA256, /* sha256 sum data blocks */ VERIFY_SHA512, /* sha512 sum data blocks */ + VERIFY_SHA3_224, /* sha3-224 sum data blocks */ + VERIFY_SHA3_256, /* sha3-256 sum data blocks */ + VERIFY_SHA3_384, /* sha3-384 sum data blocks */ + VERIFY_SHA3_512, /* sha3-512 sum data blocks */ VERIFY_XXHASH, /* xxhash sum data blocks */ - VERIFY_META, /* block_num, timestamp etc. */ VERIFY_SHA1, /* sha1 sum data blocks */ VERIFY_PATTERN, /* verify specific patterns */ + VERIFY_PATTERN_NO_HDR, /* verify specific patterns, no hdr */ VERIFY_NULL, /* pretend to verify */ }; @@ -33,12 +42,29 @@ struct verify_header { uint16_t verify_type; uint32_t len; uint64_t rand_seed; + uint64_t offset; + uint32_t time_sec; + uint32_t time_nsec; + uint16_t thread; + uint16_t numberio; uint32_t crc32; }; struct vhdr_md5 { uint32_t md5_digest[4]; }; +struct vhdr_sha3_224 { + uint8_t sha[224 / 8]; +}; +struct vhdr_sha3_256 { + uint8_t sha[256 / 8]; +}; +struct vhdr_sha3_384 { + uint8_t sha[384 / 8]; +}; +struct vhdr_sha3_512 { + uint8_t sha[512 / 8]; +}; struct vhdr_sha512 { uint8_t sha512[128]; }; @@ -60,13 +86,6 @@ struct vhdr_crc16 { struct vhdr_crc7 { uint8_t crc7; }; -struct vhdr_meta { - uint64_t offset; - unsigned char thread; - unsigned short numberio; - unsigned long time_sec; - unsigned long time_usec; -}; struct vhdr_xxhash { uint32_t hash; }; @@ -88,60 +107,9 @@ extern void fio_verify_init(struct thread_data *td); extern int verify_async_init(struct thread_data *); extern void verify_async_exit(struct thread_data *); -struct thread_rand_state { - uint32_t s[4]; -}; - /* - * For dumping current write state + * Callbacks for pasting formats in the pattern buffer */ -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 all_io_list { - uint64_t threads; - struct thread_io_list state[0]; -}; - -#define VSTATE_HDR_VERSION 0x01 - -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(void); -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 *, struct thread_io_list *); -extern int verify_state_hdr(struct verify_state_hdr *, struct thread_io_list *); - -static inline size_t thread_io_list_sz(struct thread_io_list *s) -{ - return sizeof(*s) + le64_to_cpu(s->depth) * sizeof(uint64_t); -} - -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, const char *name, - const char *prefix, int num) -{ - sprintf(out, "%s-%s-%d-verify.state", prefix, name, num); -} +extern int paste_blockoff(char *buf, unsigned int len, void *priv); #endif