Add unmap hook that belongs to the IO engines
[fio.git] / fio.h
diff --git a/fio.h b/fio.h
index 8f437f74f02a22bf8dad51a8f8a10c87200943f1..fe314bfde1eebd1e18ed6178103ce33ec9ff5f3d 100644 (file)
--- a/fio.h
+++ b/fio.h
@@ -175,6 +175,11 @@ struct io_u {
         * Callback for io completion
         */
        int (*end_io)(struct thread_data *, struct io_u *);
+
+       /*
+        * Called when io_u is about to be freed
+        */
+       void (*unmap)(struct thread_data *, struct io_u *);
 };
 
 /*
@@ -197,25 +202,49 @@ 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_PATTERN,                 /* verify a specific pattern */
        VERIFY_NULL,                    /* pretend to verify */
 };
 
 /*
- * A header structure associated with each checksummed data block
+ * A header structure associated with each checksummed data block. It is
+ * followed by a checksum specific header that contains the verification
+ * data.
  */
 struct verify_header {
        unsigned int fio_magic;
        unsigned int len;
        unsigned int verify_type;
-       union {
-               uint32_t md5_digest[16];
-               uint8_t sha512[128];
-               uint8_t sha256[128];
-               unsigned long long crc64;
-               unsigned long crc32;
-               unsigned short crc16;
-               unsigned char crc7;
-       };
+};
+
+struct vhdr_md5 {
+       uint32_t md5_digest[16];
+};
+struct vhdr_sha512 {
+       uint8_t sha512[128];
+};
+struct vhdr_sha256 {
+       uint8_t sha256[128];
+};
+struct vhdr_crc64 {
+       uint64_t crc64;
+};
+struct vhdr_crc32 {
+       uint32_t crc32;
+};
+struct vhdr_crc16 {
+       uint16_t 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 group_run_stats {
@@ -394,11 +423,13 @@ struct thread_options {
        unsigned int end_fsync;
        unsigned int sync_io;
        unsigned int verify;
+       unsigned int do_verify;
        unsigned int verifysort;
        unsigned int verify_interval;
        unsigned int verify_offset;
        unsigned int verify_pattern;
        unsigned int verify_pattern_bytes;
+       unsigned int verify_fatal;
        unsigned int use_thread;
        unsigned int unlink;
        unsigned int do_disk_util;