From 2b17b98e41180d17b4916a9e13a2a891906653a7 Mon Sep 17 00:00:00 2001 From: "Darrick J. Wong" Date: Fri, 23 Mar 2018 18:57:02 -0700 Subject: [PATCH] tune2fs: allow setting the filesystem error bit Allow the administrator to mark the filesystem's error bit to force a fsck at the next mount. Signed-off-by: Darrick J. Wong Reviewed-by: Andreas Dilger Reviewed-by: Lukas Czerner Signed-off-by: Theodore Ts'o --- misc/tune2fs.8.in | 4 ++++ misc/tune2fs.c | 5 +++++ 2 files changed, 9 insertions(+) diff --git a/misc/tune2fs.8.in b/misc/tune2fs.8.in index 740d166..f1def2b 100644 --- a/misc/tune2fs.8.in +++ b/misc/tune2fs.8.in @@ -238,6 +238,10 @@ program. This superblock setting is only honored in 2.6.35+ kernels; and not at all by the ext2 and ext3 file system drivers. .TP +.B force_fsck +Set a flag in the filesystem superblock indicating that errors have been found. +This will force fsck to run at the next mount. +.TP .B test_fs Set a flag in the filesystem superblock indicating that it may be mounted using experimental kernel code, such as the ext4dev filesystem. diff --git a/misc/tune2fs.c b/misc/tune2fs.c index f1ddfe4..4b673bc 100644 --- a/misc/tune2fs.c +++ b/misc/tune2fs.c @@ -2118,6 +2118,10 @@ static int parse_extended_opts(ext2_filsys fs, const char *opts) intv); fs->super->s_mmp_update_interval = intv; ext2fs_mark_super_dirty(fs); + } else if (!strcmp(token, "force_fsck")) { + fs->super->s_state |= EXT2_ERROR_FS; + printf(_("Setting filesystem error flag to force fsck.\n")); + ext2fs_mark_super_dirty(fs); } else if (!strcmp(token, "test_fs")) { fs->super->s_flags |= EXT2_FLAGS_TEST_FILESYS; printf("Setting test filesystem flag\n"); @@ -2200,6 +2204,7 @@ static int parse_extended_opts(ext2_filsys fs, const char *opts) "\tmmp_update_interval=\n" "\tstride=\n" "\tstripe_width=\n" + "\tforce_fsck\n" "\ttest_fs\n" "\t^test_fs\n")); free(buf); -- 1.8.3.1