Merge branch 'master' of ssh://git.kernel.dk/data/git/fio
[fio.git] / filesetup.c
index 37ea75283e0a52af68dd573e91096ccf6943e5fb..4265e3830a73c57f0f3a1c1d24e87db6b3344d9a 100644 (file)
@@ -127,7 +127,6 @@ static int extend_file(struct thread_data *td, struct fio_file *f)
        }
 
        b = malloc(td->o.max_bs[DDIR_WRITE]);
-       memset(b, 0, td->o.max_bs[DDIR_WRITE]);
 
        left = f->real_file_size;
        while (left && !td->terminate) {
@@ -135,6 +134,8 @@ static int extend_file(struct thread_data *td, struct fio_file *f)
                if (bs > left)
                        bs = left;
 
+               fill_io_buffer(td, b, bs, bs);
+
                r = write(f->fd, b, bs);
 
                if (r > 0) {
@@ -355,7 +356,8 @@ static int get_file_size(struct thread_data *td, struct fio_file *f)
 
        if (f->file_offset > f->real_file_size) {
                log_err("%s: offset extends end (%llu > %llu)\n", td->o.name,
-                                       f->file_offset, f->real_file_size);
+                                       (unsigned long long) f->file_offset,
+                                       (unsigned long long) f->real_file_size);
                return 1;
        }
 
@@ -386,7 +388,8 @@ static int __file_invalidate_cache(struct thread_data *td, struct fio_file *f,
        if (f->mmap_ptr) {
                ret = posix_madvise(f->mmap_ptr, f->mmap_sz, POSIX_MADV_DONTNEED);
 #ifdef FIO_MADV_FREE
-               (void) posix_madvise(f->mmap_ptr, f->mmap_sz, FIO_MADV_FREE);
+               if (f->filetype == FIO_TYPE_BD)
+                       (void) posix_madvise(f->mmap_ptr, f->mmap_sz, FIO_MADV_FREE);
 #endif
        } else if (f->filetype == FIO_TYPE_FILE) {
                ret = posix_fadvise(f->fd, off, len, POSIX_FADV_DONTNEED);
@@ -441,6 +444,7 @@ int generic_close_file(struct thread_data fio_unused *td, struct fio_file *f)
                f->shadow_fd = -1;
        }
 
+       f->engine_data = 0;
        return ret;
 }
 
@@ -580,7 +584,7 @@ open_again:
                         * work-around a "feature" on Linux, where a close of
                         * an fd that has been opened for write will trigger
                         * udev to call blkid to check partitions, fs id, etc.
-                        * That polutes the device cache, which can slow down
+                        * That pollutes the device cache, which can slow down
                         * unbuffered accesses.
                         */
                        if (f->shadow_fd == -1)