Program received signal SIGSEGV, Segmentation fault. 0x00000000004345c2 in fio_mmapio_invalidate (td=0x7fffeed6e790, f=0x7ffff75dc3d0) at engines/mmap.c:260 warning: Source file is more recent than executable. 260 static struct ioengine_ops ioengine = { (gdb) bt #0 0x00000000004345c2 in fio_mmapio_invalidate (td=0x7fffeed6e790, f=0x7ffff75dc3d0) at engines/mmap.c:260 #1 0x000000000041b1da in __file_invalidate_cache (td=0x7fffeed6e790, f=0x7ffff75dc3d0, off=0, len=1456128) at filesetup.c:402 #2 0x000000000041c465 in setup_files (td=0x7fffeed6e790) at filesetup.c:924 #3 0x0000000000443d7a in run_threads () at backend.c:1892 #4 fio_backend () at backend.c:2197 #5 0x0000003506a1ed1d in __libc_start_main (main=0x453980 <main>, argc=2, ubp_av=0x7fffffffe228, init=<value optimized out>, fini=<value optimized out>, rtld_fini=<value optimized out>, stack_end=0x7fffffffe218) at libc-start.c:226 #6 0x000000000040aa19 in _start () madvice before mmap. moved later. Signed-off-by Yoshinori Sato <yo-satoh@xxxxxxxx> --- engines/mmap.c | 25 ++++++++++--------------- 1 file changed, 10 insertions(+), 15 deletions(-) diff --git a/engines/mmap.c b/engines/mmap.c index 8bcd42c..69add78 100644 --- a/engines/mmap.c +++ b/engines/mmap.c @@ -62,6 +62,16 @@ static int fio_mmap_file(struct thread_data *td, struct fio_file *f, goto err; } } + if (posix_madvise(fmd->mmap_ptr, length, POSIX_MADV_DONTNEED) < 0) { + td_verror(td, errno, "madvise"); + goto err; + } + +#ifdef FIO_MADV_FREE + if (f->filetype == FIO_TYPE_BD) + (void) posix_madvise(fmd->mmap_ptr, fmd->mmap_sz, FIO_MADV_FREE); +#endif + err: if (td->error && fmd->mmap_ptr) @@ -252,20 +262,6 @@ static int fio_mmapio_close_file(struct thread_data *td, struct fio_file *f) return generic_close_file(td, f); } -static int fio_mmapio_invalidate(struct thread_data *td, struct fio_file *f) -{ - struct fio_mmap_data *fmd = FILE_ENG_DATA(f); - int ret; - - ret = posix_madvise(fmd->mmap_ptr, fmd->mmap_sz, POSIX_MADV_DONTNEED); -#ifdef FIO_MADV_FREE - if (f->filetype == FIO_TYPE_BD) - (void) posix_madvise(fmd->mmap_ptr, fmd->mmap_sz, FIO_MADV_FREE); -#endif - - return ret; -} - static struct ioengine_ops ioengine = { .name = "mmap", .version = FIO_IOOPS_VERSION, @@ -274,7 +270,6 @@ static struct ioengine_ops ioengine = { .queue = fio_mmapio_queue, .open_file = fio_mmapio_open_file, .close_file = fio_mmapio_close_file, - .invalidate = fio_mmapio_invalidate, .get_file_size = generic_get_file_size, .flags = FIO_SYNCIO | FIO_NOEXTEND, }; -- 1.7.12.4 -- To unsubscribe from this list: send the line "unsubscribe fio" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html