Add strong madvise() hint for cache pruning
[fio.git] / filesetup.c
index d7c83a796f29401752e9c6030988732dd1e1d4ad..f8f81d2b2a54e9a7692cdb41289ac8c5ff472c2c 100644 (file)
@@ -303,9 +303,12 @@ static int __file_invalidate_cache(struct thread_data *td, struct fio_file *f,
        /*
         * FIXME: add blockdev flushing too
         */
-       if (f->mmap_ptr)
+       if (f->mmap_ptr) {
                ret = madvise(f->mmap_ptr, f->mmap_sz, MADV_DONTNEED);
-       else if (f->filetype == FIO_TYPE_FILE) {
+#ifdef FIO_MADV_FREE
+               (void) madvise(f->mmap_ptr, f->mmap_sz, FIO_MADV_FREE);
+#endif
+       } else if (f->filetype == FIO_TYPE_FILE) {
                ret = fadvise(f->fd, off, len, POSIX_FADV_DONTNEED);
        } else if (f->filetype == FIO_TYPE_BD) {
                ret = blockdev_invalidate_cache(f->fd);