Update for RDMA io engine's compatibility
[fio.git] / engines / mmap.c
index 059bfcfae7453d6dd804cf25ab6ad6ecfdc05411..8c04a19a748a7d13c77c2ec4ee1f876201a9ce31 100644 (file)
@@ -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;
 }