X-Git-Url: https://git.kernel.dk/?p=fio.git;a=blobdiff_plain;f=lib%2Flfsr.c;h=975c6a5aaf6b813e5a1d4e6bd7ec63e65e67a5ae;hp=8a70029627a34ccbec53a104f879c94ec6498234;hb=7477673323a943b99ea203bb9434661d13a0159c;hpb=38f30c81d8d194da047950cbbda3896bd35cd98c diff --git a/lib/lfsr.c b/lib/lfsr.c index 8a700296..975c6a5a 100644 --- a/lib/lfsr.c +++ b/lib/lfsr.c @@ -216,14 +216,15 @@ static uint64_t __lfsr_next(uint64_t v, struct lfsr_taps *lt) return xor_mask | (v >> 1); } -int lfsr_next(struct fio_lfsr *fl, uint64_t *off) +int lfsr_next(struct fio_lfsr *fl, uint64_t *off, uint64_t last) { if (fl->num_vals > fl->max_val) return 1; do { fl->last_val = __lfsr_next(fl->last_val, &fl->taps); - if (fl->last_val - 1 <= fl->max_val) + if (fl->last_val - 1 <= fl->max_val && + fl->last_val <= last) break; } while (1);