Merge branch 'master' into gfio
[fio.git] / verify.c
index 696aff762abce69849e254cce47b6accd4fa9dd7..0a504deb15f2e22ca6ce20a526296cd97102fcb4 100644 (file)
--- a/verify.c
+++ b/verify.c
@@ -337,7 +337,7 @@ static int verify_io_u_pattern(struct verify_header *hdr, struct vcont *vc)
                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;
        }
@@ -646,12 +646,15 @@ static int verify_trimmed_io_u(struct thread_data *td, struct io_u *io_u)
        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 = crc32c(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;
 
@@ -692,8 +695,9 @@ int verify_io_u(struct thread_data *td, struct io_u *io_u)
                        memswp(p, p + td->o.verify_offset, header_size);
                hdr = p;
 
-               if (hdr->magic != FIO_HDR_MAGIC || !verify_hdr_crc(hdr)) {
-                       log_err("verify: bad magic header %x, wanted %x at file %s offset %llu, length %u\n",
+               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);
@@ -855,7 +859,7 @@ static void populate_hdr(struct thread_data *td, struct io_u *io_u,
        hdr->verify_type = td->o.verify;
        hdr->len = header_len;
        hdr->rand_seed = io_u->rand_seed;
-       hdr->crc32 = crc32c(p, sizeof(*hdr) - sizeof(hdr->crc32));
+       hdr->crc32 = crc32c(p, offsetof(struct verify_header, crc32));
 
        data_len = header_len - hdr_size(hdr);