X-Git-Url: https://git.kernel.dk/?p=fio.git;a=blobdiff_plain;f=engines%2Fmmap.c;h=c1aff5ba97a0843b151c65f05fff55b3575d387a;hp=059bfcfae7453d6dd804cf25ab6ad6ecfdc05411;hb=93bcfd20e37cef8cec350fe06d3a086724c9f257;hpb=d9a7ba88af39b1047c9f8c077280932cd12cb58e diff --git a/engines/mmap.c b/engines/mmap.c index 059bfcfa..c1aff5ba 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 " + "%lu bytes\n", 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; }