X-Git-Url: https://git.kernel.dk/?p=fio.git;a=blobdiff_plain;f=verify.h;h=539e6f6cf5c1accf7a88af9cd9d6287e8fb09163;hp=c12bc7d0a7a1babb2c266358a05b2a73df4c6c0a;hb=01bf5128d0581e267383f280c6a1dcd26517240f;hpb=23d2461974c334d77eb7a06a2dbd1f37aeee85d4 diff --git a/verify.h b/verify.h index c12bc7d0..539e6f6c 100644 --- a/verify.h +++ b/verify.h @@ -1,10 +1,17 @@ #ifndef FIO_VERIFY_H #define FIO_VERIFY_H -#define FIO_HDR_MAGIC 0xf00baaef +#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 */ @@ -14,8 +21,14 @@ enum { VERIFY_CRC7, /* crc7 sum data blocks */ VERIFY_SHA256, /* sha256 sum data blocks */ VERIFY_SHA512, /* sha512 sum data blocks */ - VERIFY_META, /* block_num, timestamp etc. */ + 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_SHA1, /* sha1 sum data blocks */ + VERIFY_PATTERN, /* verify specific patterns */ + VERIFY_PATTERN_NO_HDR, /* verify specific patterns, no hdr */ VERIFY_NULL, /* pretend to verify */ }; @@ -25,19 +38,38 @@ enum { * data. */ struct verify_header { - unsigned int fio_magic; - unsigned int len; - unsigned int verify_type; + uint16_t magic; + 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[16]; + 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]; }; struct vhdr_sha256 { - uint8_t sha256[128]; + uint8_t sha256[64]; }; struct vhdr_sha1 { uint32_t sha1[5]; @@ -54,12 +86,8 @@ 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; }; /* @@ -67,8 +95,11 @@ struct vhdr_meta { */ extern void populate_verify_io_u(struct thread_data *, struct io_u *); extern int __must_check get_next_verify(struct thread_data *td, struct io_u *); -extern int __must_check verify_io_u(struct thread_data *, struct io_u *); -extern int verify_io_u_async(struct thread_data *, struct io_u *); +extern int __must_check verify_io_u(struct thread_data *, struct io_u **); +extern int verify_io_u_async(struct thread_data *, struct io_u **); +extern void fill_verify_pattern(struct thread_data *td, void *p, unsigned int len, struct io_u *io_u, uint64_t seed, int use_seed); +extern void fill_buffer_pattern(struct thread_data *td, void *p, unsigned int len); +extern void fio_verify_init(struct thread_data *td); /* * Async verify offload @@ -76,4 +107,9 @@ extern int verify_io_u_async(struct thread_data *, struct io_u *); extern int verify_async_init(struct thread_data *); extern void verify_async_exit(struct thread_data *); +/* + * Callbacks for pasting formats in the pattern buffer + */ +extern int paste_blockoff(char *buf, unsigned int len, void *priv); + #endif