Skip to content

Commit

Permalink
Update API for file write hints
Browse files Browse the repository at this point in the history
This is now queued up for 4.13 inclusion. Adjust the bits we need
to conform to what is queued up.

Signed-off-by: Jens Axboe <axboe@kernel.dk>
  • Loading branch information
axboe committed Jun 27, 2017
1 parent f20560d commit bd553af
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 6 deletions.
13 changes: 12 additions & 1 deletion ioengines.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;
}
Expand Down
13 changes: 8 additions & 5 deletions os/os-linux.h
Original file line number Diff line number Diff line change
Expand Up @@ -309,14 +309,17 @@ static inline int fio_set_sched_idle(void)
#endif
#define F_GET_RW_HINT (F_LINUX_SPECIFIC_BASE + 11)
#define F_SET_RW_HINT (F_LINUX_SPECIFIC_BASE + 12)
#define F_GET_FILE_RW_HINT (F_LINUX_SPECIFIC_BASE + 13)
#define F_SET_FILE_RW_HINT (F_LINUX_SPECIFIC_BASE + 14)
#endif

#ifndef RWH_WRITE_LIFE_NONE
#define RWH_WRITE_LIFE_NONE 0
#define RWH_WRITE_LIFE_SHORT 1
#define RWH_WRITE_LIFE_MEDIUM 2
#define RWH_WRITE_LIFE_LONG 3
#define RWH_WRITE_LIFE_EXTREME 4
#define RWH_WRITE_LIFE_NOT_SET 0
#define RWH_WRITE_LIFE_NONE 1
#define RWH_WRITE_LIFE_SHORT 2
#define RWH_WRITE_LIFE_MEDIUM 3
#define RWH_WRITE_LIFE_LONG 4
#define RWH_WRITE_LIFE_EXTREME 5
#endif

#define FIO_HAVE_WRITE_HINT
Expand Down

0 comments on commit bd553af

Please sign in to comment.