Skip to content

Commit

Permalink
Merge branch 'master' of https://github.com/bvanassche/fio
Browse files Browse the repository at this point in the history
* 'master' of https://github.com/bvanassche/fio:
  Fall back to F_SET_RW_HINT if F_SET_FILE_RW_HINT is not supported
  • Loading branch information
vincentkfu committed Dec 11, 2023
2 parents 3cb5053 + 0cfea59 commit 63e6f55
Showing 1 changed file with 12 additions and 10 deletions.
22 changes: 12 additions & 10 deletions ioengines.c
Original file line number Diff line number Diff line change
Expand Up @@ -590,19 +590,21 @@ 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;
int res;

/*
* 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.
* For direct IO, set the hint on the file descriptor if that is
* supported. Otherwise set it on the inode. 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) {
if (td->o.odirect) {
res = fcntl(f->fd, F_SET_FILE_RW_HINT, &hint);
if (res < 0)
res = fcntl(f->fd, F_SET_RW_HINT, &hint);
} else {
res = fcntl(f->fd, F_SET_RW_HINT, &hint);
}
if (res < 0) {
td_verror(td, errno, "fcntl write hint");
goto err;
}
Expand Down

0 comments on commit 63e6f55

Please sign in to comment.