if (size > (len - i))
size = len - i;
if (memcmp(buf + i, pattern + mod, size))
- // Let the slow compare find the first mismatch byte.
+ /* Let the slow compare find the first mismatch byte. */
break;
mod = 0;
}
return ret;
}
-static int verify_hdr_crc(struct verify_header *hdr)
+static int verify_header(struct verify_header *hdr)
{
void *p = hdr;
uint32_t crc;
- crc = crc32(p, sizeof(*hdr) - sizeof(hdr->crc32));
+ if (hdr->magic != FIO_HDR_MAGIC)
+ return 0;
+
+ crc = crc32c(p, offsetof(struct verify_header, crc32));
if (crc == hdr->crc32)
return 1;
memswp(p, p + td->o.verify_offset, header_size);
hdr = p;
- if (hdr->fio_magic == FIO_HDR_MAGIC2) {
- if (!verify_hdr_crc(hdr)) {
- log_err("fio: bad crc on verify header.\n");
- return EILSEQ;
- }
- } else if (hdr->fio_magic == FIO_HDR_MAGIC) {
- log_err("fio: v1 headers no longer supported.\n");
- log_err("fio: re-run the write workload.\n");
- return EILSEQ;
- } else {
- log_err("verify: bad magic header %x, wanted %x at file %s offset %llu, length %u\n",
- hdr->fio_magic, FIO_HDR_MAGIC2,
+ if (!verify_header(hdr)) {
+ log_err("verify: bad magic header %x, wanted %x at "
+ "file %s offset %llu, length %u\n",
+ hdr->magic, FIO_HDR_MAGIC,
io_u->file->file_name,
io_u->offset + hdr_num * hdr->len, hdr->len);
return EILSEQ;
p = (void *) hdr;
- hdr->fio_magic = FIO_HDR_MAGIC2;
- hdr->len = header_len;
+ hdr->magic = FIO_HDR_MAGIC;
hdr->verify_type = td->o.verify;
- hdr->pad1 = 0;
+ hdr->len = header_len;
hdr->rand_seed = io_u->rand_seed;
- hdr->pad2 = 0;
- hdr->crc32 = crc32(p, sizeof(*hdr) - sizeof(hdr->crc32));
+ hdr->crc32 = crc32c(p, offsetof(struct verify_header, crc32));
data_len = header_len - hdr_size(hdr);