X-Git-Url: https://git.kernel.dk/?p=fio.git;a=blobdiff_plain;f=engines%2Fmmap.c;h=8c04a19a748a7d13c77c2ec4ee1f876201a9ce31;hp=002918c1fcd4e32323a9038a7b23e310ee06140d;hb=3441a52d588b95267f31491d4dca5f1418b1dcf5;hpb=ff58fcede39d16a2c642897cbe5a7f28b2da1950 diff --git a/engines/mmap.c b/engines/mmap.c index 002918c1..8c04a19a 100644 --- a/engines/mmap.c +++ b/engines/mmap.c @@ -45,12 +45,12 @@ static int fio_mmap_file(struct thread_data *td, struct fio_file *f, } if (!td_random(td)) { - if (madvise(f->mmap_ptr, length, MADV_SEQUENTIAL) < 0) { + if (posix_madvise(f->mmap_ptr, length, POSIX_MADV_SEQUENTIAL) < 0) { td_verror(td, errno, "madvise"); goto err; } } else { - if (madvise(f->mmap_ptr, length, MADV_RANDOM) < 0) { + if (posix_madvise(f->mmap_ptr, length, POSIX_MADV_RANDOM) < 0) { td_verror(td, errno, "madvise"); goto err; } @@ -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; } @@ -170,7 +170,7 @@ static int fio_mmapio_queue(struct thread_data *td, struct io_u *io_u) io_u->error = errno; td_verror(td, io_u->error, "msync"); } - if (madvise(io_u->mmap_data, io_u->xfer_buflen, MADV_DONTNEED) < 0) { + if (posix_madvise(io_u->mmap_data, io_u->xfer_buflen, POSIX_MADV_DONTNEED) < 0) { io_u->error = errno; td_verror(td, io_u->error, "madvise"); } @@ -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; }