X-Git-Url: https://git.kernel.dk/?p=fio.git;a=blobdiff_plain;f=filesetup.c;h=70589aa513eaa95d6108664df88d43270d8ba475;hp=1a5a7eccb1b8c95c545c7b94923990d6a005e23c;hb=8a4d0ff0b2d8192ef58e69b7f2a3c976f3bebd5c;hpb=9c0d224129b0c59698e4c77e7fed00dc8cbb50e1 diff --git a/filesetup.c b/filesetup.c index 1a5a7ecc..70589aa5 100644 --- a/filesetup.c +++ b/filesetup.c @@ -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); @@ -611,7 +614,7 @@ int setup_files(struct thread_data *td) temp_stall_ts = 1; if (!terse_output) log_info("%s: Laying out IO file(s) (%u file(s) /" - " %LuMiB)\n", td->o.name, need_extend, + " %LuMB)\n", td->o.name, need_extend, extend_size >> 20); for_each_file(td, f, i) { @@ -624,7 +627,8 @@ int setup_files(struct thread_data *td) fio_file_clear_extend(f); if (!td->o.fill_device) { old_len = f->real_file_size; - extend_len = f->io_size + f->file_offset - old_len; + extend_len = f->io_size + f->file_offset - + old_len; } f->real_file_size = (f->io_size + f->file_offset); err = extend_file(td, f); @@ -787,7 +791,7 @@ int add_file(struct thread_data *td, const char *fname) log_err("fio: smalloc OOM\n"); assert(0); } - + f->fd = -1; if (td->files_size <= td->files_index) { @@ -815,7 +819,7 @@ int add_file(struct thread_data *td, const char *fname) log_err("fio: smalloc OOM\n"); assert(0); } - + get_file_type(f); switch (td->o.file_lock_mode) { @@ -1016,14 +1020,14 @@ void dup_files(struct thread_data *td, struct thread_data *org) assert(0); } __f->fd = -1; - + if (f->file_name) { __f->file_name = smalloc_strdup(f->file_name); if (!__f->file_name) { log_err("fio: smalloc OOM\n"); assert(0); } - + __f->filetype = f->filetype; }