Use the regular block offset seed to "seed" the lfsr generator,
so that it obeys randrepeat=0/1 as well.
Signed-off-by: Jens Axboe <axboe@kernel.dk>
blocks = (f->real_file_size + td->o.rw_min_bs - 1) /
(unsigned long long) td->o.rw_min_bs;
if (td->o.random_generator == FIO_RAND_GEN_LFSR) {
- if (!lfsr_init(&f->lfsr, blocks))
+ unsigned long seed;
+
+ seed = td->rand_seeds[FIO_RAND_BLOCK_OFF];
+
+ if (!lfsr_init(&f->lfsr, blocks, seed))
continue;
} else if (!td->o.norandommap) {
f->io_axmap = axmap_new(blocks);
return NULL;
}
-int lfsr_init(struct fio_lfsr *fl, uint64_t size)
+int lfsr_init(struct fio_lfsr *fl, uint64_t size, unsigned long seed)
{
struct lfsr_taps *tap;
int i;
if (!tap)
return 1;
- fl->last_val = 1;
+ fl->last_val = seed;
fl->max_val = size - 1;
fl->num_vals = 0;
fl->taps.length = tap->length;
};
int lfsr_next(struct fio_lfsr *fl, uint64_t *off);
-int lfsr_init(struct fio_lfsr *fl, uint64_t size);
+int lfsr_init(struct fio_lfsr *fl, uint64_t size, unsigned long seed);
#endif