- buf = (void *) hdr + hdr_size;
- len = get_hdr_inc(td, io_u) - hdr_size;
- mod = hdr_size % td->o.verify_pattern_bytes;
+ pattern_size = td->o.verify_pattern_bytes;
+ if (pattern_size <= 1)
+ pattern_size = MAX_PATTERN_SIZE;
+ buf = (void *) hdr + header_size;
+ len = get_hdr_inc(td, io_u) - header_size;
+ mod = header_size % pattern_size;
+
+ for (i = 0; i < len; i += size) {
+ size = pattern_size - mod;
+ if (size > (len - i))
+ size = len - i;
+ if (memcmp(buf + i, pattern + mod, size))
+ /* Let the slow compare find the first mismatch byte. */
+ break;
+ mod = 0;
+ }