From: Yongpeng Yang <[email protected]>

Add support to clear or set extent flags through ioctl for
the inline extent feature. This allows users to enable or disable
inline extent format on individual files via the f2fs_io tool.

Signed-off-by: Yongpeng Yang <[email protected]>
---
 tools/f2fs_io/f2fs_io.c | 16 ++++++++++++++--
 tools/f2fs_io/f2fs_io.h |  3 +++
 2 files changed, 17 insertions(+), 2 deletions(-)

diff --git a/tools/f2fs_io/f2fs_io.c b/tools/f2fs_io/f2fs_io.c
index 94e61b8..1a8c6a2 100644
--- a/tools/f2fs_io/f2fs_io.c
+++ b/tools/f2fs_io/f2fs_io.c
@@ -317,6 +317,12 @@ static void do_getflags(int argc, char **argv, const 
struct cmd_desc *cmd)
                printf("immutable");
                exist = 1;
        }
+       if (flag & FS_EXTENT_FL) {
+               if (exist)
+                       printf(",");
+               printf("extent");
+               exist = 1;
+       }
        if (!exist)
                printf("none");
        printf("\n");
@@ -332,7 +338,8 @@ static void do_getflags(int argc, char **argv, const struct 
cmd_desc *cmd)
 "  compression\n"                                              \
 "  nocompression\n"                                            \
 "  immutable\n"                                                        \
-"  nocow\n"
+"  nocow\n"                                                    \
+"  extent\n"
 
 static void do_setflags(int argc, char **argv, const struct cmd_desc *cmd)
 {
@@ -362,6 +369,8 @@ static void do_setflags(int argc, char **argv, const struct 
cmd_desc *cmd)
                flag |= FS_IMMUTABLE_FL;
        else if (!strcmp(argv[1], "nocow"))
                flag |= FS_NOCOW_FL;
+       else if (!strcmp(argv[1], "extent"))
+               flag |= FS_EXTENT_FL;
 
        ret = ioctl(fd, F2FS_IOC_SETFLAGS, &flag);
        printf("set a flag on %s ret=%d, flags=%s\n", argv[2], ret, argv[1]);
@@ -378,7 +387,8 @@ static void do_setflags(int argc, char **argv, const struct 
cmd_desc *cmd)
 "  compression\n"                                              \
 "  nocompression\n"                                            \
 "  immutable\n"                                                        \
-"  nocow\n"
+"  nocow\n"                                                    \
+"  extent\n"
 
 static void do_clearflags(int argc, char **argv, const struct cmd_desc *cmd)
 {
@@ -406,6 +416,8 @@ static void do_clearflags(int argc, char **argv, const 
struct cmd_desc *cmd)
                flag &= ~FS_IMMUTABLE_FL;
        else if (!strcmp(argv[1], "nocow"))
                flag &= ~FS_NOCOW_FL;
+       else if (!strcmp(argv[1], "extent"))
+               flag &= ~FS_EXTENT_FL;
 
        ret = ioctl(fd, F2FS_IOC_SETFLAGS, &flag);
        printf("clear a flag on %s ret=%d, flags=%s\n", argv[2], ret, argv[1]);
diff --git a/tools/f2fs_io/f2fs_io.h b/tools/f2fs_io/f2fs_io.h
index 539964f..5e85dc7 100644
--- a/tools/f2fs_io/f2fs_io.h
+++ b/tools/f2fs_io/f2fs_io.h
@@ -222,6 +222,9 @@ enum {
 #ifndef FS_NOCOW_FL
 #define FS_NOCOW_FL                    0x00800000 /* Do not cow file */
 #endif
+#ifndef FS_EXTENT_FL
+#define FS_EXTENT_FL                   0x00080000 /* Extent file */
+#endif
 #ifndef FS_NOCOMP_FL
 #define FS_NOCOMP_FL                   0x00000400 /* Don't compress */
 #endif
-- 
2.43.0



_______________________________________________
Linux-f2fs-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel

Reply via email to