- blocks = (f->real_file_size + td->o.rw_min_bs - 1) /
- (unsigned long long) td->o.rw_min_bs;
- f->io_bitmap = bitmap_new(blocks);
- if (f->io_bitmap)
+ uint64_t file_size = min(f->real_file_size, f->io_size);
+
+ blocks = file_size / (unsigned long long) td->o.rw_min_bs;
+
+ if (td->o.random_generator == FIO_RAND_GEN_LFSR) {
+ unsigned long seed;
+
+ seed = td->rand_seeds[FIO_RAND_BLOCK_OFF];
+
+ if (!lfsr_init(&f->lfsr, blocks, seed, seed & 0xF))
+ continue;
+ } else if (!td->o.norandommap) {
+ f->io_axmap = axmap_new(blocks);
+ if (f->io_axmap)
+ continue;
+ } else if (td->o.norandommap)