Skip to content

Commit b555e3b

Browse files
author
Jaegeuk Kim
committed
f2fs_io: support xattr(large_folio)
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
1 parent ee44482 commit b555e3b

2 files changed

Lines changed: 39 additions & 0 deletions

File tree

tools/f2fs_io/f2fs_io.c

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2084,6 +2084,7 @@ static void do_setxattr(int argc, char **argv, const struct cmd_desc *cmd)
20842084
int ret, len;
20852085
char *value;
20862086
unsigned char tmp;
2087+
unsigned int tmp_u;
20872088

20882089
if (argc != 4) {
20892090
fputs("Excess arguments\n\n", stderr);
@@ -2095,6 +2096,10 @@ static void do_setxattr(int argc, char **argv, const struct cmd_desc *cmd)
20952096
tmp = strtoul(argv[2], NULL, 0);
20962097
value = (char *)&tmp;
20972098
len = 1;
2099+
} else if (!strcmp(argv[1], F2FS_USER_FADVISE_NAME)) {
2100+
tmp_u = strtoul(argv[2], NULL, 0);
2101+
value = (unsigned char *)&tmp_u;
2102+
len = sizeof(unsigned int);
20982103
} else {
20992104
value = argv[2];
21002105
len = strlen(value);
@@ -2217,6 +2222,33 @@ static void do_get_advise(int argc, char **argv, const struct cmd_desc *cmd)
22172222
printf("\n");
22182223
}
22192224

2225+
#define get_fadvise_desc "get_fadvise"
2226+
#define get_fadvise_help "f2fs_io get_fadvise [file_path]\n\n"
2227+
2228+
static void do_get_fadvise(int argc, char **argv, const struct cmd_desc *cmd)
2229+
{
2230+
int ret;
2231+
unsigned char value;
2232+
2233+
if (argc != 2) {
2234+
fputs("Excess arguments\n\n", stderr);
2235+
fputs(cmd->cmd_help, stderr);
2236+
exit(1);
2237+
}
2238+
2239+
ret = getxattr(argv[1], F2FS_USER_FADVISE_NAME, &value, sizeof(value));
2240+
if (ret != sizeof(value)) {
2241+
perror("getxattr");
2242+
exit(1);
2243+
}
2244+
2245+
printf("fadvise=0x%x, advise_type: ", value);
2246+
if (value & BIT(F2FS_XATTR_FADV_LARGEFOLIO)
2247+
printf("largefolio");
2248+
printf("\n");
2249+
}
2250+
2251+
22202252
#define ftruncate_desc "ftruncate a file"
22212253
#define ftruncate_help \
22222254
"f2fs_io ftruncate [length] [file_path]\n\n" \
@@ -2626,6 +2658,7 @@ const struct cmd_desc cmd_list[] = {
26262658
CMD(removexattr),
26272659
CMD(lseek),
26282660
CMD(get_advise),
2661+
CMD(get_fadvise),
26292662
CMD(ioprio),
26302663
CMD(ftruncate),
26312664
CMD(test_create_perf),

tools/f2fs_io/f2fs_io.h

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -186,6 +186,7 @@ struct fsverity_enable_arg {
186186
#define F2FS_IOC_FSSETXATTR FS_IOC_FSSETXATTR
187187

188188
#define F2FS_SYSTEM_ADVISE_NAME "system.advise"
189+
#define F2FS_USER_FADVISE_NAME "user.fadvise"
189190
#define FADVISE_COLD_BIT 0x01
190191
#define FADVISE_LOST_PINO_BIT 0x02
191192
#define FADVISE_ENCRYPT_BIT 0x04
@@ -195,6 +196,11 @@ struct fsverity_enable_arg {
195196
#define FADVISE_VERITY_BIT 0x40
196197
#define FADVISE_TRUNC_BIT 0x80
197198

199+
/* used for F2FS_USER_FADVISE_NAME */
200+
enum {
201+
F2FS_XATTR_FADV_LARGEFOLIO,
202+
};
203+
198204
/* used for F2FS_IOC_IO_PRIO */
199205
enum {
200206
F2FS_IOPRIO_WRITE = 1, /* high write priority */

0 commit comments

Comments
 (0)