- hdr = (struct verify_header *) io_u->buf;
- hdr->fio_magic = FIO_HDR_MAGIC;
- hdr->len = io_u->buflen;
- hdr->verify_type = td->o.verify;
-
- p = io_u->buf + sizeof(*hdr);
- fill_random_bytes(td, p, len);
-
- switch (td->o.verify) {
- case VERIFY_MD5:
- fill_md5(hdr, p, len);
- break;
- case VERIFY_CRC32:
- fill_crc32(hdr, p, len);
- break;
- case VERIFY_CRC16:
- fill_crc16(hdr, p, len);
- break;
- case VERIFY_CRC7:
- fill_crc7(hdr, p, len);
- break;
- default:
- log_err("fio: bad verify type: %d\n", td->o.verify);
- assert(0);
+ fill_pattern(td, p, io_u->buflen);
+
+ hdr_inc = io_u->buflen;
+ if (td->o.verify_interval)
+ hdr_inc = td->o.verify_interval;
+ data_len = hdr_inc - sizeof(*hdr);
+
+ for (;p < io_u->buf + io_u->buflen; p += hdr_inc) {
+ hdr = p;
+
+ hdr->fio_magic = FIO_HDR_MAGIC;
+ hdr->verify_type = td->o.verify;
+ hdr->len = hdr_inc;
+
+ data = p + sizeof(*hdr);
+ switch (td->o.verify) {
+ case VERIFY_MD5:
+ fill_md5(hdr, data, data_len);
+ break;
+ case VERIFY_CRC64:
+ fill_crc64(hdr, data, data_len);
+ break;
+ case VERIFY_CRC32:
+ fill_crc32(hdr, data, data_len);
+ break;
+ case VERIFY_CRC16:
+ fill_crc16(hdr, data, data_len);
+ break;
+ case VERIFY_CRC7:
+ fill_crc7(hdr, data, data_len);
+ break;
+ default:
+ log_err("fio: bad verify type: %d\n", td->o.verify);
+ assert(0);
+ }
+ if (td->o.verify_offset)
+ memswp(p, p + td->o.verify_offset, sizeof(*hdr));