X-Git-Url: https://git.kernel.dk/?p=fio.git;a=blobdiff_plain;f=verify.c;h=2ae03f85fbea88f4e0f24ff33a4480d124d27e26;hp=a0c2e38ad170cee6cc21929186a26e8d941e60b7;hb=2243dfc796a8a6e137893a57a77949df7657dd71;hpb=ca09be4b1a8e97f0bca5cfbddb399899cf561eaa diff --git a/verify.c b/verify.c index a0c2e38a..2ae03f85 100644 --- a/verify.c +++ b/verify.c @@ -29,62 +29,47 @@ 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_pattern(struct thread_data *td, void *p, unsigned int len, - char *pattern, unsigned int pattern_bytes) +void fill_buffer_pattern(struct thread_data *td, void *p, unsigned int len) { - switch (pattern_bytes) { - case 0: - assert(0); - break; - case 1: - dprint(FD_VERIFY, "fill verify pattern b=0 len=%u\n", len); - memset(p, pattern[0], len); - break; - default: { - unsigned int i = 0, size = 0; - unsigned char *b = p; - - dprint(FD_VERIFY, "fill verify pattern b=%d len=%u\n", - pattern_bytes, len); - - while (i < len) { - size = pattern_bytes; - if (size > (len - i)) - size = len - i; - memcpy(b+i, pattern, size); - i += size; - } - break; - } - } + fill_pattern(p, len, td->o.buffer_pattern, td->o.buffer_pattern_bytes); } -void fill_buffer_pattern(struct thread_data *td, void *p, unsigned int len) +void __fill_buffer(struct thread_options *o, unsigned long seed, void *p, + unsigned int len) { - fill_pattern(td, p, len, td->o.buffer_pattern, td->o.buffer_pattern_bytes); + __fill_random_buf_percentage(seed, p, o->compress_percentage, len, len, o->buffer_pattern, o->buffer_pattern_bytes); +} + +unsigned long fill_buffer(struct thread_data *td, void *p, unsigned int len) +{ + struct frand_state *fs = &td->verify_state; + struct thread_options *o = &td->o; + + return fill_random_buf_percentage(fs, p, o->compress_percentage, len, len, o->buffer_pattern, o->buffer_pattern_bytes); } void fill_verify_pattern(struct thread_data *td, void *p, unsigned int len, struct io_u *io_u, unsigned long seed, int use_seed) { - if (!td->o.verify_pattern_bytes) { + struct thread_options *o = &td->o; + + if (!o->verify_pattern_bytes) { dprint(FD_VERIFY, "fill random bytes len=%u\n", len); if (use_seed) - __fill_random_buf(p, len, seed); + __fill_buffer(o, seed, p, len); else - io_u->rand_seed = fill_random_buf(&td->verify_state, p, len); + io_u->rand_seed = fill_buffer(td, p, len); return; } if (io_u->buf_filled_len >= len) { dprint(FD_VERIFY, "using already filled verify pattern b=%d len=%u\n", - td->o.verify_pattern_bytes, len); + o->verify_pattern_bytes, len); return; } - fill_pattern(td, p, len, td->o.verify_pattern, td->o.verify_pattern_bytes); - + fill_pattern(p, len, o->verify_pattern, o->verify_pattern_bytes); io_u->buf_filled_len = len; } @@ -1166,7 +1151,7 @@ static void *verify_async_thread(void *data) struct io_u *io_u; int ret = 0; - if (td->o.verify_cpumask_set && + if (fio_option_is_set(&td->o, verify_cpumask) && fio_setaffinity(td->pid, td->o.verify_cpumask)) { log_err("fio: failed setting verify thread affinity\n"); goto done; @@ -1375,7 +1360,7 @@ static int open_state_file(const char *name, const char *prefix, int num, else flags = O_RDONLY; - verify_state_gen_name(out, name, prefix, num); + verify_state_gen_name(out, sizeof(out), name, prefix, num); fd = open(out, flags, 0644); if (fd == -1) {