Fix issue with random offset being off if io_size != real_file_size
[fio.git] / io_u.c
diff --git a/io_u.c b/io_u.c
index d92d940522191451a830e2b1c44428d385e4ccbd..c0beafd46ad86e8640f815792b34af0078ef4856 100644 (file)
--- a/io_u.c
+++ b/io_u.c
@@ -113,7 +113,8 @@ static int get_next_free_block(struct thread_data *td, struct fio_file *f,
 
        i = f->last_free_lookup;
        *b = (i * BLOCKS_PER_MAP);
-       while ((*b) * min_bs < f->real_file_size) {
+       while ((*b) * min_bs < f->real_file_size &&
+               (*b) * min_bs < f->io_size) {
                if (f->file_map[i] != (unsigned int) -1) {
                        *b += ffz(f->file_map[i]);
                        if (*b > last_block(td, f, ddir))