mmap: catch invalid msync() errors early
authorJens Axboe <jaxboe@fusionio.com>
Sat, 22 Jan 2011 22:11:13 +0000 (15:11 -0700)
committerJens Axboe <jaxboe@fusionio.com>
Sat, 22 Jan 2011 22:11:13 +0000 (15:11 -0700)
Reported-by: Bruce Cran <bruce@cran.org.uk>
Signed-off-by: Jens Axboe <jaxboe@fusionio.com>
engines/mmap.c

index 059bfcfae7453d6dd804cf25ab6ad6ecfdc05411..79238b1e537b079a183f31f589aa151b0d681419 100644 (file)
@@ -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;