+ .name = "iomem_align",
+ .alias = "mem_align",
+ .type = FIO_OPT_INT,
+ .off1 = td_var_offset(mem_align),
+ .minval = 0,
+ .help = "IO memory buffer offset alignment",
+ .def = "0",
+ .parent = "iomem",
+ },
+ {
+ .name = "verify",
+ .type = FIO_OPT_STR,
+ .off1 = td_var_offset(verify),
+ .help = "Verify data written",
+ .cb = str_verify_cb,
+ .def = "0",
+ .posval = {
+ { .ival = "0",
+ .oval = VERIFY_NONE,
+ .help = "Don't do IO verification",
+ },
+ { .ival = "md5",
+ .oval = VERIFY_MD5,
+ .help = "Use md5 checksums for verification",
+ },
+ { .ival = "crc64",
+ .oval = VERIFY_CRC64,
+ .help = "Use crc64 checksums for verification",
+ },
+ { .ival = "crc32",
+ .oval = VERIFY_CRC32,
+ .help = "Use crc32 checksums for verification",
+ },
+ { .ival = "crc32c-intel",
+ .oval = VERIFY_CRC32C_INTEL,
+ .help = "Use hw crc32c checksums for verification",
+ },
+ { .ival = "crc32c",
+ .oval = VERIFY_CRC32C,
+ .help = "Use crc32c checksums for verification",
+ },
+ { .ival = "crc16",
+ .oval = VERIFY_CRC16,
+ .help = "Use crc16 checksums for verification",
+ },
+ { .ival = "crc7",
+ .oval = VERIFY_CRC7,
+ .help = "Use crc7 checksums for verification",
+ },
+ { .ival = "sha1",
+ .oval = VERIFY_SHA1,
+ .help = "Use sha1 checksums for verification",
+ },
+ { .ival = "sha256",
+ .oval = VERIFY_SHA256,
+ .help = "Use sha256 checksums for verification",
+ },
+ { .ival = "sha512",
+ .oval = VERIFY_SHA512,
+ .help = "Use sha512 checksums for verification",
+ },
+ { .ival = "meta",
+ .oval = VERIFY_META,
+ .help = "Use io information",
+ },
+ {
+ .ival = "null",
+ .oval = VERIFY_NULL,
+ .help = "Pretend to verify",
+ },
+ },
+ },
+ {
+ .name = "do_verify",
+ .type = FIO_OPT_BOOL,
+ .off1 = td_var_offset(do_verify),
+ .help = "Run verification stage after write",
+ .def = "1",
+ .parent = "verify",
+ },
+ {
+ .name = "verifysort",
+ .type = FIO_OPT_BOOL,
+ .off1 = td_var_offset(verifysort),
+ .help = "Sort written verify blocks for read back",
+ .def = "1",
+ .parent = "verify",
+ },
+ {
+ .name = "verify_interval",
+ .type = FIO_OPT_INT,
+ .off1 = td_var_offset(verify_interval),
+ .minval = 2 * sizeof(struct verify_header),
+ .help = "Store verify buffer header every N bytes",
+ .parent = "verify",
+ },
+ {
+ .name = "verify_offset",
+ .type = FIO_OPT_INT,
+ .help = "Offset verify header location by N bytes",
+ .def = "0",
+ .cb = str_verify_offset_cb,
+ .parent = "verify",
+ },
+ {
+ .name = "verify_pattern",
+ .type = FIO_OPT_STR,
+ .cb = str_verify_pattern_cb,
+ .help = "Fill pattern for IO buffers",
+ .parent = "verify",
+ },
+ {
+ .name = "verify_fatal",
+ .type = FIO_OPT_BOOL,
+ .off1 = td_var_offset(verify_fatal),
+ .def = "0",
+ .help = "Exit on a single verify failure, don't continue",
+ .parent = "verify",
+ },
+ {
+ .name = "verify_dump",
+ .type = FIO_OPT_BOOL,
+ .off1 = td_var_offset(verify_dump),
+ .def = "1",
+ .help = "Dump contents of good and bad blocks on failure",
+ .parent = "verify",
+ },
+ {
+ .name = "verify_async",
+ .type = FIO_OPT_INT,
+ .off1 = td_var_offset(verify_async),
+ .def = "0",
+ .help = "Number of async verifier threads to use",
+ .parent = "verify",
+ },
+ {
+ .name = "verify_backlog",
+ .type = FIO_OPT_STR_VAL,
+ .off1 = td_var_offset(verify_backlog),
+ .help = "Verify after this number of blocks are written",
+ .parent = "verify",
+ },
+ {
+ .name = "verify_backlog_batch",
+ .type = FIO_OPT_INT,
+ .off1 = td_var_offset(verify_batch),
+ .help = "Verify this number of IO blocks",
+ .parent = "verify",
+ },
+#ifdef FIO_HAVE_CPU_AFFINITY
+ {
+ .name = "verify_async_cpus",