X-Git-Url: https://git.kernel.dk/?p=fio.git;a=blobdiff_plain;f=ioengines.c;h=6e6e3dea019e2b54a127a1dfea9e6e2b90dde48a;hp=c90a2ca5bde30e75dec5261130b6b77fb6a1999b;hb=e97412c38bedc4f365bdf4abe1ff8f6694587a86;hpb=e2c75fc49d028736eccea411fcb34b1d1b9efd36 diff --git a/ioengines.c b/ioengines.c index c90a2ca5..6e6e3dea 100644 --- a/ioengines.c +++ b/ioengines.c @@ -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; } }