Skip to content

Commit

Permalink
f2fs_io: add fadvise support
Browse files Browse the repository at this point in the history
f2fs_io fadvise [advice] [offset] [length] [file]

advice can be "willneed" and "sequential".

Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
  • Loading branch information
Jaegeuk Kim committed Oct 3, 2023
1 parent 220d716 commit 2bd1585
Show file tree
Hide file tree
Showing 2 changed files with 45 additions and 0 deletions.
3 changes: 3 additions & 0 deletions man/f2fs_io.8
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,9 @@ going down with fsck mark
\fBpinfile\fR \fI[get|set] [file]\fR
Get or set the pinning status on a file.
.TP
\fBfadvise\fR \fI[advice] [offset] [length] [file]\fR
Pass an advice to the specified file. The advice can be willneed and sequential.
.TP
\fBfallocate\fR \fI[-c] [-i] [-p] [-z] [keep_size] [offset] [length] [file]\fR
Request that space be allocated on a file. The
.I keep_size
Expand Down
42 changes: 42 additions & 0 deletions tools/f2fs_io/f2fs_io.c
Original file line number Diff line number Diff line change
Expand Up @@ -398,6 +398,47 @@ static void do_shutdown(int argc, char **argv, const struct cmd_desc *cmd)
exit(0);
}

#define fadvise_desc "fadvise"
#define fadvise_help \
"f2fs_io fadvise [advice] [offset] [length] [file]\n\n" \
"fadvice given the file\n" \
"advice can be\n" \
" willneed\n" \
" sequential\n" \

static void do_fadvise(int argc, char **argv, const struct cmd_desc *cmd)
{
int fd, advice;
off_t offset, length;

if (argc != 5) {
fputs("Excess arguments\n\n", stderr);
fputs(cmd->cmd_help, stderr);
exit(1);
}

fd = xopen(argv[4], O_RDWR, 0);

if (!strcmp(argv[1], "willneed")) {
advice = POSIX_FADV_WILLNEED;
} else if (!strcmp(argv[1], "sequential")) {
advice = POSIX_FADV_SEQUENTIAL;
} else {
fputs("Wrong advice\n\n", stderr);
fputs(cmd->cmd_help, stderr);
exit(1);
}

offset = atoi(argv[2]);
length = atoll(argv[3]);

if (posix_fadvise(fd, offset, length, advice) != 0)
die_errno("fadvise failed");

printf("fadvice %s to a file: %s\n", argv[1], argv[4]);
exit(0);
}

#define pinfile_desc "pin file control"
#define pinfile_help \
"f2fs_io pinfile [get|set] [file]\n\n" \
Expand Down Expand Up @@ -1499,6 +1540,7 @@ const struct cmd_desc cmd_list[] = {
CMD(clearflags),
CMD(shutdown),
CMD(pinfile),
CMD(fadvise),
CMD(fallocate),
CMD(erase),
CMD(write),
Expand Down

0 comments on commit 2bd1585

Please sign in to comment.