diff options
-rw-r--r-- | lib/ext2fs/initialize.c | 17 | ||||
-rw-r--r-- | misc/mke2fs.c | 30 | ||||
-rw-r--r-- | misc/mke2fs.conf | 1 | ||||
-rw-r--r-- | misc/mke2fs.conf.5.in | 11 | ||||
-rw-r--r-- | tests/mke2fs.conf.in | 1 |
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] |