X-Git-Url: https://git.kernel.dk/?a=blobdiff_plain;f=engines%2Fmmap.c;h=8c04a19a748a7d13c77c2ec4ee1f876201a9ce31;hb=954cd73a9a93102c24afa869fbe67ac38af6e416;hp=059bfcfae7453d6dd804cf25ab6ad6ecfdc05411;hpb=d9a7ba88af39b1047c9f8c077280932cd12cb58e;p=fio.git diff --git a/engines/mmap.c b/engines/mmap.c index 059bfcfa..8c04a19a 100644 --- a/engines/mmap.c +++ b/engines/mmap.c @@ -59,7 +59,7 @@ static int fio_mmap_file(struct thread_data *td, struct fio_file *f, err: if (td->error && f->mmap_ptr) munmap(f->mmap_ptr, length); - + return td->error; } @@ -181,8 +181,16 @@ static int fio_mmapio_queue(struct thread_data *td, struct io_u *io_u) static int fio_mmapio_init(struct thread_data *td) { + struct thread_options *o = &td->o; unsigned long shift, mask; + if ((td->o.rw_min_bs & page_mask) && + (o->odirect || o->fsync_blocks || o->fdatasync_blocks)) { + log_err("fio: mmap options dictate a minimum block size of " + "%llu bytes\n", (unsigned long long) page_size); + return 1; + } + mmap_map_size = MMAP_TOTAL_SZ / td->o.nr_files; mask = mmap_map_size; shift = 0; @@ -192,7 +200,7 @@ static int fio_mmapio_init(struct thread_data *td) break; shift++; } while (1); - + mmap_map_mask = 1UL << shift; return 0; }