f2fs_io: support freeze/thaw Support to freeze and thaw filesystem. Signed-off-by: Chao Yu <chao@kernel.org> Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
diff --git a/man/f2fs_io.8 b/man/f2fs_io.8 index 708a583..5c3d204 100644 --- a/man/f2fs_io.8 +++ b/man/f2fs_io.8
@@ -215,6 +215,12 @@ .B -v Verbose mode. .RE +.TP +\fBfreeze\fR \fI[directory]\fR +Freeze filesystem that directory belongs to. +.TP +\fBthaw\fR \fI[directory]\fR +Thaw filesystem that directory belongs to. .SH AUTHOR This version of .B f2fs_io
diff --git a/tools/f2fs_io/f2fs_io.c b/tools/f2fs_io/f2fs_io.c index 9baea2b..1f26c7c 100644 --- a/tools/f2fs_io/f2fs_io.c +++ b/tools/f2fs_io/f2fs_io.c
@@ -2454,6 +2454,52 @@ exit(0); } +#define freeze_desc "freeze filesystem" +#define freeze_help "f2fs_io freeze [directory_path]\n\n" + +static void do_freeze(int argc, char **argv, const struct cmd_desc *cmd) +{ + int ret, fd; + + if (argc != 2) { + fputs("Excess arguments\n\n", stderr); + fputs(cmd->cmd_help, stderr); + exit(1); + } + + fd = xopen(argv[1], O_DIRECTORY, 0); + + ret = ioctl(fd, FIFREEZE); + if (ret < 0) + die_errno("FIFREEZE failed"); + + printf("freeze filesystem ret=%d\n", ret); + exit(0); +} + +#define thaw_desc "thaw filesystem" +#define thaw_help "f2fs_io thaw [directory_path]\n\n" + +static void do_thaw(int argc, char **argv, const struct cmd_desc *cmd) +{ + int ret, fd; + + if (argc != 2) { + fputs("Excess arguments\n\n", stderr); + fputs(cmd->cmd_help, stderr); + exit(1); + } + + fd = xopen(argv[1], O_DIRECTORY, 0); + + ret = ioctl(fd, FITHAW); + if (ret < 0) + die_errno("FITHAW failed"); + + printf("thaw filesystem ret=%d\n", ret); + exit(0); +} + #define CMD_HIDDEN 0x0001 #define CMD(name) { #name, do_##name, name##_desc, name##_help, 0 } #define _CMD(name) { #name, do_##name, NULL, NULL, CMD_HIDDEN } @@ -2504,6 +2550,8 @@ CMD(ftruncate), CMD(test_create_perf), CMD(test_lookup_perf), + CMD(freeze), + CMD(thaw), { NULL, NULL, NULL, NULL, 0 } };