X-Git-Url: https://git.kernel.dk/?p=fio.git;a=blobdiff_plain;f=verify.c;h=aeafdb5da318c0b6d789e93d991720d71caa8d2d;hp=db6e17e4def8f60f556b5fca4c1082f107f46d3f;hb=7fc08e9929fefc9a8a2008eddb2e2fcba33fd90a;hpb=53a7af851836735f1ff59d2b9e1a743e7cc499e9;ds=sidebyside diff --git a/verify.c b/verify.c index db6e17e4..aeafdb5d 100644 --- a/verify.c +++ b/verify.c @@ -30,9 +30,6 @@ static void populate_hdr(struct thread_data *td, struct io_u *io_u, struct verify_header *hdr, unsigned int header_num, unsigned int header_len); -static void fill_hdr(struct thread_data *td, struct io_u *io_u, - struct verify_header *hdr, unsigned int header_num, - unsigned int header_len, uint64_t rand_seed); static void __fill_hdr(struct thread_data *td, struct io_u *io_u, struct verify_header *hdr, unsigned int header_num, unsigned int header_len, uint64_t rand_seed); @@ -90,8 +87,13 @@ static unsigned int get_hdr_inc(struct thread_data *td, struct io_u *io_u) { unsigned int hdr_inc; + /* + * If we use bs_unaligned, buflen can be larger than the verify + * interval (which just defaults to the smallest blocksize possible). + */ hdr_inc = io_u->buflen; - if (td->o.verify_interval && td->o.verify_interval <= io_u->buflen) + if (td->o.verify_interval && td->o.verify_interval <= io_u->buflen && + !td->o.bs_unaligned) hdr_inc = td->o.verify_interval; return hdr_inc; @@ -239,7 +241,6 @@ struct vcont { }; #define DUMP_BUF_SZ 255 -static int dump_buf_warned; static void dump_buf(char *buf, unsigned int len, unsigned long long offset, const char *type, struct fio_file *f) @@ -258,10 +259,8 @@ static void dump_buf(char *buf, unsigned int len, unsigned long long offset, buf_left -= strlen(fname); if (buf_left <= 0) { - if (!dump_buf_warned) { + if (!fio_did_warn(FIO_WARN_VERIFY_BUF)) log_err("fio: verify failure dump buffer too small\n"); - dump_buf_warned = 1; - } free(ptr); return; } @@ -1167,7 +1166,7 @@ static void __fill_hdr(struct thread_data *td, struct io_u *io_u, hdr->rand_seed = rand_seed; hdr->offset = io_u->offset + header_num * td->o.verify_interval; hdr->time_sec = io_u->start_time.tv_sec; - hdr->time_usec = io_u->start_time.tv_nsec / 1000; + hdr->time_nsec = io_u->start_time.tv_nsec; hdr->thread = td->thread_number; hdr->numberio = io_u->numberio; hdr->crc32 = fio_crc32c(p, offsetof(struct verify_header, crc32)); @@ -1178,7 +1177,6 @@ static void fill_hdr(struct thread_data *td, struct io_u *io_u, struct verify_header *hdr, unsigned int header_num, unsigned int header_len, uint64_t rand_seed) { - if (td->o.verify != VERIFY_PATTERN_NO_HDR) __fill_hdr(td, io_u, hdr, header_num, header_len, rand_seed); }