summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/ext2fs/initialize.c17
-rw-r--r--misc/mke2fs.c30
-rw-r--r--misc/mke2fs.conf1
-rw-r--r--misc/mke2fs.conf.5.in11
-rw-r--r--tests/mke2fs.conf.in1
5 files changed, 39 insertions, 21 deletions
diff --git a/lib/ext2fs/initialize.c b/lib/ext2fs/initialize.c
index 32f075e7..5e331731 100644
--- a/lib/ext2fs/initialize.c
+++ b/lib/ext2fs/initialize.c
@@ -46,19 +46,6 @@
#endif /* defined(__linux__) && defined(EXT2_OS_LINUX) */
/*
- * Note we override the kernel include file's idea of what the default
- * check interval (never) should be. It's a good idea to check at
- * least *occasionally*, specially since servers will never rarely get
- * to reboot, since Linux is so robust these days. :-)
- *
- * 180 days (six months) seems like a good value.
- */
-#ifdef EXT2_DFL_CHECKINTERVAL
-#undef EXT2_DFL_CHECKINTERVAL
-#endif
-#define EXT2_DFL_CHECKINTERVAL (86400L * 180L)
-
-/*
* Calculate the number of GDT blocks to reserve for online filesystem growth.
* The absolute maximum number of GDT blocks we can reserve is determined by
* the number of block pointers that can fit into a single block.
@@ -151,7 +138,7 @@ errcode_t ext2fs_initialize(const char *name, int flags,
set_field(s_log_block_size, 0); /* default blocksize: 1024 bytes */
set_field(s_log_frag_size, 0); /* default fragsize: 1024 bytes */
set_field(s_first_data_block, super->s_log_block_size ? 0 : 1);
- set_field(s_max_mnt_count, EXT2_DFL_MAX_MNT_COUNT);
+ set_field(s_max_mnt_count, 0);
set_field(s_errors, EXT2_ERRORS_DEFAULT);
set_field(s_feature_compat, 0);
set_field(s_feature_incompat, 0);
@@ -185,7 +172,7 @@ errcode_t ext2fs_initialize(const char *name, int flags,
super->s_inode_size = EXT2_GOOD_OLD_INODE_SIZE;
}
- set_field(s_checkinterval, EXT2_DFL_CHECKINTERVAL);
+ set_field(s_checkinterval, 0);
super->s_mkfs_time = super->s_lastcheck = fs->now ? fs->now : time(NULL);
super->s_creator_os = CREATOR_OS;
diff --git a/misc/mke2fs.c b/misc/mke2fs.c
index b994e1e1..87d3c262 100644
--- a/misc/mke2fs.c
+++ b/misc/mke2fs.c
@@ -2168,13 +2168,31 @@ int main (int argc, char *argv[])
uuid_generate((unsigned char *) fs->super->s_hash_seed);
/*
- * Add "jitter" to the superblock's check interval so that we
- * don't check all the filesystems at the same time. We use a
- * kludgy hack of using the UUID to derive a random jitter value.
+ * Periodic checks can be enabled/disabled via config file.
+ * Note we override the kernel include file's idea of what the default
+ * check interval (never) should be. It's a good idea to check at
+ * least *occasionally*, specially since servers will never rarely get
+ * to reboot, since Linux is so robust these days. :-)
+ *
+ * 180 days (six months) seems like a good value.
*/
- for (i = 0, val = 0 ; i < sizeof(fs->super->s_uuid); i++)
- val += fs->super->s_uuid[i];
- fs->super->s_max_mnt_count += val % EXT2_DFL_MAX_MNT_COUNT;
+#ifdef EXT2_DFL_CHECKINTERVAL
+#undef EXT2_DFL_CHECKINTERVAL
+#endif
+#define EXT2_DFL_CHECKINTERVAL (86400L * 180L)
+
+ if (get_bool_from_profile(fs_types, "enable_periodic_fsck", 0)) {
+ fs->super->s_checkinterval = EXT2_DFL_CHECKINTERVAL;
+ fs->super->s_max_mnt_count = EXT2_DFL_MAX_MNT_COUNT;
+ /*
+ * Add "jitter" to the superblock's check interval so that we
+ * don't check all the filesystems at the same time. We use a
+ * kludgy hack of using the UUID to derive a random jitter value
+ */
+ for (i = 0, val = 0 ; i < sizeof(fs->super->s_uuid); i++)
+ val += fs->super->s_uuid[i];
+ fs->super->s_max_mnt_count += val % EXT2_DFL_MAX_MNT_COUNT;
+ }
/*
* Override the creator OS, if applicable
diff --git a/misc/mke2fs.conf b/misc/mke2fs.conf
index 52fe58ed..868821d3 100644
--- a/misc/mke2fs.conf
+++ b/misc/mke2fs.conf
@@ -1,5 +1,6 @@
[defaults]
base_features = sparse_super,filetype,resize_inode,dir_index,ext_attr
+ enable_periodic_fsck = 0
blocksize = 4096
inode_size = 256
inode_ratio = 16384
diff --git a/misc/mke2fs.conf.5.in b/misc/mke2fs.conf.5.in
index dfc06958..cb643eb7 100644
--- a/misc/mke2fs.conf.5.in
+++ b/misc/mke2fs.conf.5.in
@@ -107,6 +107,17 @@ command-line option
to
.BR mke2fs (8).
.TP
+.I enable_periodic_fsck
+This relation specifies whether periodic filesystem checks should be
+enforced at boot time. If enabled, checks will be forced every
+180 days, or after a random number of mounts. These values may
+be changed later via the
+.B -i
+and
+.B -c
+command-line options to
+.BR tune2fs (8).
+.TP
.I force_undo
This relation, if set to a boolean value of true, forces
.B mke2fs
diff --git a/tests/mke2fs.conf.in b/tests/mke2fs.conf.in
index 99eb75f4..cdb6c952 100644
--- a/tests/mke2fs.conf.in
+++ b/tests/mke2fs.conf.in
@@ -3,6 +3,7 @@
blocksize = 4096
inode_size = 256
inode_ratio = 16384
+ enable_periodic_fsck = true
lazy_itable_init = false
[fs_types]