void fill_verify_pattern(struct thread_data *td, void *p, unsigned int len, struct io_u *io_u, unsigned long seed, int use_seed) { 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_buffer(o, seed, p, len); else io_u->rand_seed = fill_buffer(td, p, len); return; } /* Skip if we were here and we do not need to patch pattern * with format */ if (!td->o.verify_fmt_sz && io_u->buf_filled_len >= len) { dprint(FD_VERIFY, "using already filled verify pattern b=%d len=%u\n", o->verify_pattern_bytes, len); return; } (void)paste_format(td->o.verify_pattern, td->o.verify_pattern_bytes, td->o.verify_fmt, td->o.verify_fmt_sz, p, len, io_u); io_u->buf_filled_len = len; }
static int __filbuf( FILE *fp ) { if( __fill_buffer( fp ) == 0 ) { return( EOF ); } else { fp->_cnt--; fp->_ptr++; return( *(fp->_ptr - 1) ); } }
void fill_verify_pattern(struct thread_data *td, void *p, unsigned int len, struct io_u *io_u, unsigned long seed, int use_seed) { 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_buffer(o, seed, p, len); else 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", o->verify_pattern_bytes, len); return; } fill_pattern(p, len, o->verify_pattern, o->verify_pattern_bytes); io_u->buf_filled_len = len; }