X-Git-Url: https://git.kernel.dk/?a=blobdiff_plain;ds=sidebyside;f=ioengines.c;h=6e6e3dea019e2b54a127a1dfea9e6e2b90dde48a;hb=e8b746558dfd2c397cc8e64b211dbe44b3eb4c55;hp=abbaa9a7bd46eb3478706183fad658607d3058d9;hpb=84e893fd54a0895b9eadd8b4c62243faf19c9305;p=fio.git diff --git a/ioengines.c b/ioengines.c index abbaa9a7..6e6e3dea 100644 --- a/ioengines.c +++ b/ioengines.c @@ -476,8 +476,19 @@ int td_io_open_file(struct thread_data *td, struct fio_file *f) if (fio_option_is_set(&td->o, write_hint) && (f->filetype == FIO_TYPE_BLOCK || f->filetype == FIO_TYPE_FILE)) { uint64_t hint = td->o.write_hint; + int cmd; - if (fcntl(f->fd, F_SET_RW_HINT, &hint) < 0) { + /* + * 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; }