* [f2fs-dev] [PATCH v4] f2fs_io: add flags parameter to fiemap subcommand
@ 2026-03-09 4:00 Yongpeng Yang
2026-03-09 6:30 ` Chao Yu via Linux-f2fs-devel
0 siblings, 1 reply; 2+ messages in thread
From: Yongpeng Yang @ 2026-03-09 4:00 UTC (permalink / raw)
To: Chao Yu, Jaegeuk Kim; +Cc: Yongpeng Yang, Yongpeng Yang, linux-f2fs-devel
From: Yongpeng Yang <yangyongpeng@xiaomi.com>
Add a flags parameter to the fiemap subcommand so that it can pass
FIEMAP_FLAG_SYNC, FIEMAP_FLAG_XATTR, and FIEMAP_FLAG_CACHE. Before
retrieving the fiemap, perform the corresponding actions based on
these flags, such as syncing data or preloading extents.
Signed-off-by: Yongpeng Yang <yangyongpeng@xiaomi.com>
---
v4:
- Add more descriptions of the flags parameter in help text and commit
message.
v3:
- Make the flags parameter optional.
v2:
- Update fiemap command's parameters in man/f2fs_io.8.
---
man/f2fs_io.8 | 2 +-
tools/f2fs_io/f2fs_io.c | 17 +++++++++++++----
2 files changed, 14 insertions(+), 5 deletions(-)
diff --git a/man/f2fs_io.8 b/man/f2fs_io.8
index 5c3d204..51ccfaf 100644
--- a/man/f2fs_io.8
+++ b/man/f2fs_io.8
@@ -138,7 +138,7 @@ mmap(MAP_POPULATE)
mmap() + mlock()
.RE
.TP
-\fBfiemap\fR \fI[offset in 4kb] [count] [file_path]\fR
+\fBfiemap\fR \fI[offset in 4kb] [count] [file_path] {flags}\fR
get block address in file
.TP
\fBgc_urgent\fR \fIdev [start|end|run] [time in sec]\fR
diff --git a/tools/f2fs_io/f2fs_io.c b/tools/f2fs_io/f2fs_io.c
index c977f4d..866a4f2 100644
--- a/tools/f2fs_io/f2fs_io.c
+++ b/tools/f2fs_io/f2fs_io.c
@@ -1357,8 +1357,13 @@ static void do_randread(int argc, char **argv, const struct cmd_desc *cmd)
}
#define fiemap_desc "get block address in file"
-#define fiemap_help \
-"f2fs_io fiemap [offset in 4kb] [count in 4kb] [file_path]\n\n"\
+#define fiemap_help \
+"f2fs_io fiemap [offset in 4kb] [count in 4kb] [file_path] {flags}\n\n" \
+"flags: bitmask with optional combinations of:\n" \
+"0: no extra actions, by default\n" \
+"1: sync file data before map\n" \
+"2: map extended attribute tree\n" \
+"4: request caching of the extents\n" \
#if defined(HAVE_LINUX_FIEMAP_H) && defined(HAVE_LINUX_FS_H)
static void do_fiemap(int argc, char **argv, const struct cmd_desc *cmd)
@@ -1366,10 +1371,10 @@ static void do_fiemap(int argc, char **argv, const struct cmd_desc *cmd)
unsigned int i;
int fd, extents_mem_size;
u64 start, length;
- u32 mapped_extents;
+ u32 mapped_extents, flags = 0;
struct fiemap *fm = xmalloc(sizeof(struct fiemap));
- if (argc != 4) {
+ if (argc < 4 || argc > 5) {
fputs("Excess arguments\n\n", stderr);
fputs(cmd->cmd_help, stderr);
exit(1);
@@ -1378,8 +1383,11 @@ static void do_fiemap(int argc, char **argv, const struct cmd_desc *cmd)
memset(fm, 0, sizeof(struct fiemap));
start = (u64)atoi(argv[1]) * F2FS_DEFAULT_BLKSIZE;
length = (u64)atoi(argv[2]) * F2FS_DEFAULT_BLKSIZE;
+ if (argc == 5)
+ flags = (u32)atoi(argv[4]);
fm->fm_start = start;
fm->fm_length = length;
+ fm->fm_flags = flags;
fd = xopen(argv[3], O_RDONLY | O_LARGEFILE, 0);
@@ -1397,6 +1405,7 @@ static void do_fiemap(int argc, char **argv, const struct cmd_desc *cmd)
memset(fm, 0, sizeof(struct fiemap) + extents_mem_size);
fm->fm_start = start;
fm->fm_length = length;
+ fm->fm_flags = flags;
fm->fm_extent_count = mapped_extents;
if (ioctl(fd, FS_IOC_FIEMAP, fm) < 0)
--
2.50.1
_______________________________________________
Linux-f2fs-devel mailing list
Linux-f2fs-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel
^ permalink raw reply related [flat|nested] 2+ messages in thread
end of thread, other threads:[~2026-03-09 6:30 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-03-09 4:00 [f2fs-dev] [PATCH v4] f2fs_io: add flags parameter to fiemap subcommand Yongpeng Yang
2026-03-09 6:30 ` Chao Yu via Linux-f2fs-devel
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox