Merge branch 'ci' of https://github.com/sitsofe/fio
[fio.git] / ioengines.c
index c90a2ca5bde30e75dec5261130b6b77fb6a1999b..6e6e3dea019e2b54a127a1dfea9e6e2b90dde48a 100644 (file)
@@ -281,7 +281,7 @@ int td_io_queue(struct thread_data *td, struct io_u *io_u)
                 */
                if (td->o.read_iolog_file)
                        memcpy(&td->last_issue, &io_u->issue_time,
-                                       sizeof(struct timeval));
+                                       sizeof(io_u->issue_time));
        }
 
        if (ddir_rw(ddir)) {
@@ -356,7 +356,7 @@ int td_io_queue(struct thread_data *td, struct io_u *io_u)
                 */
                if (td->o.read_iolog_file)
                        memcpy(&td->last_issue, &io_u->issue_time,
-                                       sizeof(struct timeval));
+                                       sizeof(io_u->issue_time));
        }
 
        return ret;
@@ -472,13 +472,24 @@ int td_io_open_file(struct thread_data *td, struct fio_file *f)
                        goto err;
                }
        }
-#ifdef FIO_HAVE_STREAMID
-       if (td->o.fadvise_stream &&
+#ifdef FIO_HAVE_WRITE_HINT
+       if (fio_option_is_set(&td->o, write_hint) &&
            (f->filetype == FIO_TYPE_BLOCK || f->filetype == FIO_TYPE_FILE)) {
-               off_t stream = td->o.fadvise_stream;
+               uint64_t hint = td->o.write_hint;
+               int cmd;
 
-               if (posix_fadvise(f->fd, stream, f->io_size, POSIX_FADV_STREAMID) < 0) {
-                       td_verror(td, errno, "fadvise streamid");
+               /*
+                * For direct IO, we just need/want to set the hint on
+                * the file descriptor. For buffered IO, we need to set
+                * it on the inode.
+                */
+               if (td->o.odirect)
+                       cmd = F_SET_FILE_RW_HINT;
+               else
+                       cmd = F_SET_RW_HINT;
+
+               if (fcntl(f->fd, cmd, &hint) < 0) {
+                       td_verror(td, errno, "fcntl write hint");
                        goto err;
                }
        }